C++QT5跨平台界面编程原理--Qt信号槽使用及其原理

目录

 

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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值