日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

運行截圖如下:



格式如下:

[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);


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


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


代碼如下:

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(); }

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。