Qt自定义信号槽代码实现

Qt自定义信号槽代码实现

目录

Qt自定义信号槽代码实现

1、自定义信号

2、自定义槽

3、使用自定义信号

4、关联自定义信号和槽

5、参考核心代码:

下载地址:


以下是一个基于C++的Qt 信号槽的演示:

源码下载地址:https://download.csdn.net/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 

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  // 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、运行效果如下:

Qt自定义信号槽代码实现_第1张图片

下载地址:

完整代码下载地址:             https://download.csdn.net/download/mars1199/88519983

你可能感兴趣的:(Qt,qt,开发语言,c++,qt5)