目录
3.通过qt设计器qt designer设置关闭窗口和最小化窗口信号槽
4.使用connect函数实现信号槽绑定并分析moc生成的槽函数代码
1.QT信号槽概念原理讲解
信号槽:类似windows的消息机制,但是不同。
信号函数,只发送不需要知道接收者。
槽函数(普通函数),只接收不管通信。
QObject来绑定
QT信号槽原理:
绑定信号函数和槽函数,调用信号函数(将信号写入队列),主线程从队列中获取信号
QApplication a(argc, argv); //主循环
return a.exec();//处理所有的信号槽函数,阻塞函数
设计器添加信号槽的两种方法(拖动、添加)
2.手动添加信号函数并分析qt的moc如何生成信号代码
手动添加信号槽:
●QOBJECT说明:生成moc文件
●手动创建信号signals
●手动创建槽public slots:
main.cpp:
#include "testsignal.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
testsignal w;
w.show();
return a.exec();
}
testsignal.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_testsignal.h"
class testsignal : public QWidget
{
Q_OBJECT
public:
testsignal(QWidget *parent = Q_NULLPTR);
signals:
void ViewSig();//信号
public slots:
void ViewSlot();//槽函数
void TestSlot();
private:
Ui::testsignalClass ui;
};
testsignal.cpp
#include "testsignal.h"
#include <iostream>
using namespace std;
testsignal::testsignal(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ViewSig();
connect(ui.tests, SIGNAL(clicked()), this, SLOT(TestSlot()));//绑定信号和槽函数
}
void testsignal::TestSlot()
{
cout << "TestSlot" << endl;
}
void testsignal::ViewSlot()
{
cout << "ViewSlot" << endl;
}
这个是信号moc文件中的:只写了信号函数
3.通过qt设计器qt designer设置关闭窗口和最小化窗口信号槽
4.使用connect函数实现信号槽绑定并分析moc生成的槽函数代码
在生成的ui_***.h文件中: