Qt工作笔记-Qt5新版信号与槽
生活随笔
收集整理的這篇文章主要介紹了
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_Hform.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_Hwidget.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新版信号与槽的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-QLineEdit与QTe
- 下一篇: Qt工作笔记-对*QObject::se