日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Qt工作笔记-Qt5新版信号与槽

發(fā)布時間:2025/3/15 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt工作笔记-Qt5新版信号与槽 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

運(yùn)行截圖如下:



格式如下:

[static] QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal,const QObject *receiver,PointerToMemberFunction method,Qt::ConnectionType type = Qt::AutoConnection)

如:

connect(m_form,&Form::sendMsg,this,&Widget::receivData);


與前者最大的不同就是,指定信號和槽兩個參數(shù)時不用再使用SIGNAL()和SLOT()宏,并且槽函數(shù)不再必須是使用slots關(guān)鍵字聲明的函數(shù),而可以是任意能和信號關(guān)聯(lián)的成員函數(shù)。要使一個成員函數(shù)可以和信號關(guān)聯(lián),那么這個函數(shù)的參數(shù)數(shù)目不能超過信號的參數(shù)數(shù)目,但是并不要求該函數(shù)擁有的參數(shù)類型與信號中對應(yīng)的參數(shù)類型完全一致,只需要可以進(jìn)行隱式轉(zhuǎn)換即可。使用這種重載形式,前面程序中的關(guān)聯(lián)可以使用如下代碼代替。


使用這種方式與前一種相比,還有一個好處就是可以在編譯時進(jìn)行檢查,信號或槽的拼寫錯誤、槽函數(shù)參數(shù)數(shù)目多于信號的參數(shù)數(shù)目等錯誤在編譯時就能夠被發(fā)現(xiàn)。


代碼如下:

widget.h

#ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();void receivData(QString msg);private:Ui::Widget *ui; };#endif // WIDGET_H

form.h

#ifndef FORM_H #define FORM_H#include <QWidget>namespace Ui { class Form; }class Form : public QWidget {Q_OBJECTpublic:explicit Form(QWidget *parent = 0);~Form();signals:void sendMsg(QString msg);public slots:void btnClicked();private:Ui::Form *ui; };#endif // FORM_H

widget.cpp

#include "widget.h" #include "ui_widget.h" #include "form.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("CSDN IT1995");Form *m_form=new Form();m_form->show();connect(m_form,&Form::sendMsg,this,&Widget::receivData); }void Widget::receivData(QString msg){ui->lineEdit->setText(msg); }Widget::~Widget() {delete ui; }

form.cpp

#include "form.h" #include "ui_form.h"Form::Form(QWidget *parent) :QWidget(parent),ui(new Ui::Form) {ui->setupUi(this);this->setWindowTitle("CSDN IT1995");connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(btnClicked())); }void Form::btnClicked(){emit sendMsg(ui->lineEdit->text()); }Form::~Form() {delete ui; }

main.cpp

#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }

總結(jié)

以上是生活随笔為你收集整理的Qt工作笔记-Qt5新版信号与槽的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。