Qt 控制台 使用connect连接信号和槽
导言:
Qt的信号号和槽 (Signal&Slots)是Qt的特性,深入理解该机制是能够精通Qt编程的关键。
信号号和槽 (Signal&Slots)的作用:
信号和槽用于两个对象之间的通信。
常见的如:Qt的部件类(l例如:Widget)中定义了一些信号和槽,一般的操作是子类化这个部件,然后添加自己的信号和槽来实现想要的功能。
信号号和槽 (Signal&Slots)机制与回调函数的区别:
回调函数是指向函数的指针,把这个回调函数指针传递给要被处理的函数,那么就可以在这个函数被处理时在适当的地方调用这个回调函数。
信号和槽的机制,一个信号可以关联到多个槽上,多个信号也可以关联到同一个槽上,甚至,一个信号还可以关联到另一个信号上。
信号和槽的运用:
定义信号
例如:
signals:
void dlgReturn(int); //自定义的信号
说明:
1、声明一个信号要使用signals关键字
2、在signals 前面不能使用public、private和protected等限定符,因为只有定义了该信号的类及其子类才可以发射该信号。
3、而且信号只用声明,不需要也不能对它进行定义实现。
4、信号没有返回值,只能用void类型。
5、使用信号和槽,还需要在类声明的最开始处添加Q_OBJECT宏。
定义槽:
例如:
private slots:
void showValue(int value);
说明:
1、声明一个槽需要使用slot关键字。
2、一个槽可以是private\public\或者protected类型。
3、槽也是可以声明为虚函数。
信号和槽关联函数:
bool QObject::connect(const QObject *sender, const char * signal, const QObject *receiver, const char *method, Qt::ConnectionType type = AutoConnection )
一个控制台实现connect连接信号和槽的实例
目标:通过该实例实现对象间的简单通信。
首先定义一个类Foo
1、设置两个私有变量val,area。 同时可以通过公有函数value()、getArea()来访问这两个私有变量。
2、定义两个信号 valueChange(int), areaChange(int)
3、定义槽 setValue(int)、circleSolve(int).
#define PI 3.14class Foo: public QObject
{Q_OBJECTpublic:Foo();int value() const{return val;};double getArea() const {return area;};public slots:void setValue(int);void cirleSolve(int radius);signals:void valueChanged(int);void areaChange(int);
private:int val;double area;
};
其次,实现这个类:
Foo::Foo()
{}//更新val 值,并发送值更改单哦信号
void Foo::setValue(int v)
{if(v!= val){val=v;emit valueChanged(v);}
}//计算圆面积,并发送面积信号
void Foo::cirleSolve(int radius)
{area = PI*radius*radius;emit areaChange(radius);
}
接着,在main()关联 并测试,这里做了三项内容
1、建立对象c、b
2、将c对象的操作与b对象的槽相关联。
这样当c对象调用setValue()、circleSolve()函数将会影响b的私有变量。
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);Foo c,b;QObject::connect(&c,SIGNAL(valueChanged(int)),&b,SLOT(setValue(int)));QObject::connect(&c,SIGNAL(areaChange(int)),&b,SLOT(cirleSolve(int )));c.cirleSolve(6);cout<<"the circle area of b: "<<b.getArea()<<endl;b.setValue(8);cout<<"the testValue of b is :"<<b.value()<<endl;cout<<"the testValue of c is :"<<c.value()<<endl;c.setValue(5);cout<<"the testValue of b is :"<<b.value()<<endl;cout<<"the testValue of c is :"<<c.value();return a.exec();
}
信号和槽的使用总结:
1、定义信号和槽
2、关联
在适当的时候发送信号
3、使用要点:
需要继承QObject或其子类
在类声明的最开始添加QOBject 宏
槽中的参数类型要和信号的参数类型对应。
信号只用声明,且返回值为void的类型。
Qt 控制台 使用connect连接信号和槽相关推荐
- Qt源码分析之信号和槽机制
Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的 说法,简单点说就是如何在一个类的一 ...
- Qt 多线程中地信号与槽
Qt 多线程中地信号与槽 函数原型: 1 QObject::connect(const QObject *sender, const char *signal, const QObject *rece ...
- QT核心机制3:信号与槽
个人博客对应地址:QT核心机制3:信号与槽 写在前面 这篇文章基本是对Qt官方文档某些章节的翻译理解了,翻译这些章节的原因是我认为这些是Qt中最核心的东西,翻译的过程也就是强迫自己认真去读它们的过程, ...
- 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)
最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...
- Qt工作笔记-ui文件连接信号与槽
今天又学到了新的东西,当然,这个也是在和李主任交谈的时候学会的,以前从来没这么做过. 下面演示下,用的代码是下面这篇博文的代码: https://blog.csdn.net/qq78442761/ar ...
- Qt入门(3)——信号和槽
信号和槽用于对象间的通讯.信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分. 在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件.更一般地,我们希 ...
- Qt从入门到放弃——信号和槽机制(SigalSlot)
标题信号和槽概念 Qt提供了信号和槽机制用于完成界面操作的响应,信号和槽机制是完成任意两个Qt对象之 间的通信机制.其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数. 例如,窗 ...
- QT Creator应用程序开发——信号与槽
目录 一.QWidget基础窗口控件 二.信号与槽实例 三.信号与槽的补充知识 一.QWidget基础窗口控件 QWidget类是所有用户页面对象的基类,称为基础窗口控件,是一块矩形的页面可视区域,且 ...
- Qt工作笔记-Qt5新版信号与槽
运行截图如下: 格式如下: [static] QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemb ...
最新文章
- 数字孪生白皮书(2019)
- intellij idea的TFS拉取项目文件不完全、文件误删恢复、TFS忽略文件解决方法
- 利用伸展树提高区间操作的性能
- java的基础类型和字节大小_java的基础类型和字节大小
- R语言是如何增强数据科学
- Centos安装MysqlServer与MysqlWorkbench
- 怎么把pdf转成word
- 【PS】免费 使用PS批量将pdf转换成图片 pdf转图片 pdf转jpg pdf转png
- 国军标GJB 151B-2013军用设备和分系统电磁发射和敏感度要求与测量(海军10项)
- wpa_supplicant配置
- JavaScript实现汉字转拼音功能
- 2013年总结-托福备考,减肥成功,微软实习,VMware工作,硕士毕业
- Blob对象判断是不是图片类型以及Blob数据下载
- 2018年物联网趋势
- Android判断有无外置SD卡(TF卡),并读写文件
- 纯干货!埃森哲的大数据分析框架分享-part 1
- 【VideoQA最新论文阅读】第一篇视频问答综述Video Question Answering: a Survey of Models and Datasets
- 天池训练营——基于人脸的常见表情识别(3)——模型搭建、训练与测试
- 第八章 习惯五 知彼解己——移情沟通的原则
- mysql取汉字首拼_MYSQL 获取每个汉字的拼音首字母
热门文章
- improve php,解析提高PHP执行效率
- 【Python】字典(Dictionary) items()方法
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170327
- 推荐!计算机视觉最适合入门的 8 本教程,算法与实战兼备
- 力荐 | 吴恩达《序列模型》精炼笔记(1)-- 循环神经网络(RNN)
- div的visibility和display属性区别
- 总结数据库设计中的14个技巧
- 数据库记录的添加、修改、删除(DataAdapter、DataTable 、DataRow )
- leetCode刷题-第二题两数之和
- 汇编中数据处理的基本问题