QT编程中信号与槽用于处理界面各个组件的交互,类似与MFC的消息循环和绑定
注意:在使用信号与槽的类中,必须在类的定义中加入宏定义Q_OBJECT
信号(Signal)就是在特定情况下被发射的时间,类似于鼠标单击时发生clicked()信号
槽(Slot)是对信号响应的函数
在需要设计槽的控件(触发控件)上右键->转到槽
选择相应的信号之后就会跳转到该信号函数
//helloDialog.h class HelloDialog : public QMainWindow { private slots: void on_pushButton_clicked(); }
//helloDialog.cpp void HelloDialog::on_pushButton_clicked() { ui->lineEdit->setText("k5"); }
如果不在.ui文件里面直接绑定,就必须用connect()进行绑定
//helloDialog.h class HelloDialog{ public: void initSignalSlots(); //初始化信号与槽连接 private: void changeData(); }
//helloDialog.cpp void HelloDialog::initSignalSlots() { connect(ui->pushButton,SIGNAL(cliked()),this,SLOT(changeData)); } void HelloDialog::changeData(){ ui->lineEdit->setText("k5"); }
QT中的元对象(Meta Object System)提供了对象间通信的信号和槽机制 运行时类型信息 和 动态属性系统
元对象系统是基于以下3个条件:
(1)基类QObject:任何需要使用元对象系统功能的类必须继承自QObject类
(2)Q_OBJECT宏:必须在类的私有声明区声明Q_OBJECT宏(默认为private)
(3)元对象编译器(Meta-Object Compiler,moc):为QObject子类实现元对象特性提供必要的代码
原文:https://www.cnblogs.com/k5bg/p/11081243.html