深入理解QT的SIGNAL\SLOT机制(一):SIGNAL\SLOT如何使用
来源:互联网 发布:欧洲卡车模拟2 mac 编辑:程序博客网 时间:2024/05/16 00:34
首先声明不同版本的QT针对信号和槽的实现略有不同,接口大多一样。我用的是QT5.9.1。
QT的SIGNAL/SLOT有点像观察者模式,说是阶段一直做SDN,在controller的代码中就是使用观察者模式进行消息分发,看了Qt的SIGNAL/SLOT才发现这也是一种观察者模式。
第一章先来看SIGNAL/SLOT如何简单实用
新建工程,该工程里面就两个类,一个是MyWidget,继承自QWidget,一个是Test,继承自QObject。
MyWiget.h:我们在MyWidget中添加一个信号:mysignal
#ifndef MYWIDGET_H#define MYWIDGET_H#include <QWidget>namespace Ui {class MyWidget;}class MyWidget : public QWidget{ Q_OBJECTpublic: explicit MyWidget(QWidget *parent = 0);~MyWidget();signals: void mysignal();private: Ui::MyWidget *ui;};
#endif // MYWIDGET_HMyWidget.cpp:#include "mywidget.h"#include "ui_mywidget.h"#include"test.h"MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget){ ui->setupUi(this); Test test; connect(this,SIGNAL(mysignal()),&test,SLOT(mySlot())); emit mysignal();}MyWidget::~MyWidget(){ delete ui;}
我们在MyWidget的构造函数中创建了一个Test对象test,并调用QObject::connect()方法将MyWidget::mysignal信号和Test::myslot槽绑定起来。然后发射该信号。
接下里看Test.h
#ifndef TEST_H#define TEST_H#include <QObject>class Test : public QObject{ Q_OBJECTpublic: explicit Test(QObject *parent = nullptr); void func1(int); void func2(int);signals:public slots: void mySlot();};#endif // TEST_H
在Test类中添加两个函数func1和func2,和一个槽函数:myslot。
Test.cpp:
#include "test.h"#include<QDebug>Test::Test(QObject *parent) : QObject(parent){}void Test::func1(int){}void Test::func2(int){}void Test::mySlot(){ qDebug()<<"myslot called!";}
运行结果:
阅读全文
0 0
- 深入理解QT的SIGNAL\SLOT机制(一):SIGNAL\SLOT如何使用
- Qt的Signal和Slot机制(一)
- Qt的Signal和Slot机制(一)
- 深入理解QT的SIGNAL\SLOT机制(五):信号的发射过程
- 深入理解QT的SIGNAL\SLOT机制(二):QMetaObject相关知识
- 深入理解QT的SIGNAL\SLOT机制(三):QObject::connect函数
- 深入理解QT的SIGNAL\SLOT机制(四):Connection结构
- Qt的Signal和Slot机制(二)
- Java实现Qt的SIGNAL-SLOT机制
- Qt的signal/slot机制原理
- QT的signal和slot的理解
- Qt signal slot 实现机制
- QT Signal/Slot机制介绍
- Qt的signal/slot机制的原理和使用
- Qt的signal和slot使用心得
- Qt的slot和signal
- qt signal and slot
- QT signal / slot mechanism
- 安卓开发调起检测和调起第三方应用
- C语言基础
- Unity3D中通过Animator动画状态机获取任意animation clip的准确播放持续时长
- Spring Boot配置文件
- golang语言并发与并行——goroutine和channel的详细理解(一)
- 深入理解QT的SIGNAL\SLOT机制(一):SIGNAL\SLOT如何使用
- 在ftp上安装JDk
- 分治---合并排序
- 网络加载购物车自定义算价格
- HDOJ 2055 An easy problem
- golang语言并发与并行——goroutine和channel的详细理解(二)
- 代码块总结
- IT风投
- 框架结合之Spring和struts2