Qt自定义信号槽代码实现
目录
以下是一个基于C++的Qt 信号槽的演示:
源码下载地址:https://download.youkuaiyun.com/download/mars1199/88519983
1、自定义信号
需要使用关键字 signals,在类中添加如下效果
signals:
void mySignal(); // 信号只声明,不实现
2、自定义槽
需要使用 权限+关键字slots,在类中添加如下效果
private slots:
void mySlot(); // 槽需要声明+实现
槽的功能实现:
void TestMainWindow::mySlot()
{
qDebug()<<"Hello World Qt"; // 在应用程序输出中查看输出结果
}
3、使用自定义信号
只需要在按钮的槽中发射信号即可 使用关键字 emit 信号()
emit mySignal(); // 发射信号
4、关联自定义信号和槽
使用的是connect函数,使用宏的写法
connect(this,SIGNAL(mySignal()),this,SLOT(mySlot())); // 信号槽关联
5、参考核心代码:
头文件的代码:
#include <QMainWindow>
namespace Ui {
class TestMainWindow;
}
class TestMainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit TestMainWindow(QWidget *parent = 0);
~TestMainWindow();
signals:
void mySignal(); // 信号只声明,不实现
private slots:
void mySlot(); // 槽需要声明+实现
void on_pushButton_clicked();
private:
Ui::TestMainWindow *ui;
};
源文件的核心代码:
#include "testmainwindow.h"
#include "ui_testmainwindow.h"
#include <QDebug> // Qt打印输出的头文件
TestMainWindow::TestMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::TestMainWindow)
{
ui->setupUi(this);
connect(this,SIGNAL(mySignal()),this,SLOT(mySlot())); // 信号槽关联
}
TestMainWindow::~TestMainWindow()
{
delete ui;
}
void TestMainWindow::mySlot()
{
qDebug()<<"Hello World Qt"; // 在应用程序输出中查看输出结果
}
void TestMainWindow::on_pushButton_clicked()
{
emit mySignal(); // 发射信号
}
6、运行效果如下:
下载地址:
完整代码下载地址: https://download.youkuaiyun.com/download/mars1199/88519983