1.建立一个定义信号的类
右键项目->添加->add Qt Class。
这里要注意最好添加Qt Class,否则出现与Qt不兼容的问题,报moc错误。
在类头文件中添加以下内容
#include <QObject>
class runtimestate : public QObject
{
Q_OBJECT
public:
runtimestate();
~runtimestate();
void testAddNums(int a);
signals:
void add(int num);
};
注意要把构造函数改成普通构造函数,runtimestate();
添加一个 void add(int num)信号,添加一个发送这个信号的函数void testAddNums(int a)。
2.写cpp文件
#include "runtimestate.h"
runtimestate::runtimestate()
{
}
runtimestate::~runtimestate()
{
}
void runtimestate::testAddNums(int a) {
emit add(a);
}
非常简单的几行,当调用runtimestate时发出一个add(int)的信号。
3.在主界面头文件添加
#include "runtimestate.h"
private slots:
void showNum(int a);
定义了一个接收前面add(int)信号的槽。
4.在主界面cpp添加
runtimestate addNums2;
QtGuiApplication3::QtGuiApplication3(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(&addNums2, SIGNAL(add(int)), this, SLOT(showNum(int)));
}
定义了一个runtimestate类型的对象addNums2,将该对象的地址与槽showNum(int a)连接起来。
void QtGuiApplication3::showNum(int a) {
ui.lineEdit_Imgnum->setText(QString::number(a));
}
实现槽函数showNum(int a),槽函数内对界面上文本框的值进行设置。
5.
addNums2.testAddNums(fileNum);
通过addNums2对象调用testAddNums(int)函数,发出add(int)信号,信号链接到槽函数,对界面上的值进行了修改。
(完)