Chapter1:Qt概念
信号和槽
1.信号与槽机制的连接方式
(1):一个信号可以与另一个信号相连,代码如下:
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1));
(2):同一个信号可以与多个槽连接
connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));
connect(Object1,SIGNAL(signal2),Object3,SIGNAL(slot1));
(3):同一个槽可以响应多个信号
connect(Object1,SIGNAL(singla2),Object2,SIGNAL(slot2));
connect(object3,SINGAL(signal2),Object2,SIGNAL(slot2));
但常用连接方式为:
connect(Object1,SIGNAL(signal),Object2,SLOT(slot));
SIGNAL()和SLOT()是Qt定义的两个宏,他们返回其参数的C语言风格的字符串(const char*),如下等效:
connect(button,SIGNAL(clicked()),this,SLOT(showArea()));
connect(button,"clicked()",this,"showArea()");
2:信号和槽机制的优点
(1):类型安全
(2):松散耦合
一个类若要支持信号和槽,就必须从QObject或QObject的子类继承。注意,Qt信号和槽机制不支持对模板的使用。
3:信号与槽机制的效率
信号和槽机制增强了对象间通信的灵活性,然而这也损失了一些性能。通过传递一个信号来调用槽函数将会比直接调用非虚函数运行速度慢10倍。原因:
1:需要定位接受信号的对象
2:安全地遍历所有的关联
3:编组(marshal)/解组(unmarshal)传递的参数
4:多线程饿时候,信号可能需要排队处理
L2 Qt5元对象系统
Qt的元对象系统基于以下三个事实
1:基类QObject:任何需要使用元对象系统功能的类必须继承自QObject
2:Q_OBJECT宏:Q_OBJECT宏必须出现在类的的私有声明区,用于启动元对象的特性
3:元对象编译器(Meta-Object Compiler.moc):为QObject子类实现元对象特性提供必要的代码实现
L3 布局管理器
QGridLayout *mainLayout = new QGridLayout(this);
mainLayout->addWidget(...);
QWidget::setLayout(...);
Chapter1:Qt概念的更多相关文章
- Qt概念和快捷键
Qt概念和快捷键 Qt简介 1.Qt的由来和发展 Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程 ...
- 如何保证Qt状态机的最佳性能
如何保证Qt状态机的最佳性能 How to ensure the best Qt state machine performance 如果您使用Qt进行应用程序开发,并且使用状态机,那么很可能您正在使 ...
- qt quick-初始学习概念
Qt Quick简介: Qt Quik 是一种高级用户界面技术,使用它可以轻松地创建供移动和嵌入式设备使用到动态触摸式界面和轻量级应用程序:Qt Quick主要由三部份组成: 改进的Qt Creato ...
- Qt事件系统基本概念
(转自:http://www.cnblogs.com/andy1987/p/3322059.html) 1. QT事件系统 Qt应用程序的消息处理是基于事件驱动的,程序的每个动作都是由某个事件所触发的 ...
- qt model--view-delegate模式的界面设计概念,ListView用法
最经典的界面设计模式,必须知道. 作为 一种经典到 不能 再 经典 的 架构 模式, qt的model--view-delegate大 行其 道 有其 必然 的 道理. 通过 把 职责. 性质相近的 ...
- PyQt(Python+Qt)学习随笔:Model/View架构中的Model模型概念
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Model/View架构中的Model模型Model与数据源通信,为体系结构中的其他组件提供数据接口 ...
- [Qt] 基本概念
QObject :所有 Qt 类的基类 QWidget类:包含所有组件的类 Widgets:组件,组成Qt界面的基本元素 window:界面,是不含有父组件的组件 Child Widgets:子组件, ...
- Qt 5.3 下OpenCV 2.4.11 开发(0)图像处理基本概念
1.普通情况下的RGB彩色图像:它的每一个像素点都是由三个通道组成,即红色(R).绿色(G)和蓝色(B).8位三通道彩色图像就是每一个像素中每一个通道的取值范围都是 0~255(即二进制下的8位数), ...
- 保持Qt GUI响应的几种方法
最开始使用Qt时就遇到过QT Gui失去响应的问题,我是用多线程的方式解决的,然而通常来说,多线程是会降低程序的运行速度. 之后,在使用QSqlQuery::execBatch()函数时,Qt Gui ...
随机推荐
- mysql-sql语言参考
字段去重查询 select distinct style from music 批量修改某字段 update music set style = "ost" where styl ...
- fastjson总结
1,文件的转成字节数组byte[]的时候,可以直接用fastjson序列化和反序列化 2,用@RequestBody接受json的时候,content-type是否已经application/json ...
- yii 分页查询
控制器 <?php namespace backend\controllers; use app\models\Comment; use app\models\Commentstatus; us ...
- asp.net core 中KindEditor的使用
主要是需要对上传图片和文件管理的服务端进行改造 public class KindEditorController : Controller { private IHostingEnvironment ...
- 文件权限控制--umask
问题 有一个场景,在A机器上有一个可执行文件,将其压缩,然后拷贝到B机器上,解压,发现原来文件的可执行权限消失了. 原因 B机器上,当前解压用户的umask设置,限制了新创建文件的权限. umask是 ...
- 智读App-免费下载付费知识节目攻略
智读+ 知识管理App App下载地址:http://zhidujia.com/ 自助推送工具下载:http://zhidujia.com/product/pushHelper 智读App能帮你做什 ...
- ML: 聚类算法R包-层次聚类
层次聚类 stats::hclust stats::dist R使用dist()函数来计算距离,Usage: dist(x, method = "euclidean", di ...
- Block Design 小技巧之添加RTL代码到block_design
Block Design 小技巧之添加RTL代码到block_design 1.首先得打开Block Design,右击RTL文件,才会出现Add module to Block Design选项. ...
- Atom窗口切换和放大或者缩小
Atom窗口切换和放大或者缩小 快捷键就是 F11
- Java第04次实验提纲(面向对象2-继承、多态、抽象类与接口)
PTA 题集面向对象2-进阶-多态接口内部类 第1次实验 1.1 题集5-1(Comparable) 难点:如果传入对象为null,或者传入对象的某个属性为null,怎么处理? 1.2 题集5-2(C ...