目录

 

1.QT信号槽概念原理讲解

2.手动添加信号函数并分析qt的moc如何生成信号代码

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文件中:

 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐