Qt 5笔记

Qt 5笔记

1.Qt的信号与槽机制

Qt提供了信号与槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间进行通信的一种机制。信号会在某种情况下被触发,槽则是负责接受并处理这个触发信号的函数。

当一个特定的事件发生时,一个信号被发射出去,与这个信号相关联的槽则会响应这个信号并完成相应的处理。当一个类被继承时,该类的信号与槽都会被继承
信号与槽机制连接方式

1.一个信号与另一个信号连接

connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1));

表示Object1信号1发射可以触发Object2的信号1发射。

2.同一个信号与多个槽连接

connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));

connect(Object1,SIGNAL(signal2),Object3,SIGNAL(slot1));

表示Object1的信号2发射可以触发Object2和Object3的槽产生响应。

3.同一个槽响应多个信号

connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2));

connect(Object3,SIGNAL(signal2),Object2,SIGNAL(slot2));

表示Object2的槽slot2可以响应Object1和Object2的信号触发。

常用的连接方式为:connect(Object1,SIGNAL(signal1),Object2,SLOT(slot));

表示Object2的槽slot响应Object1的信号signal1。

实际上SIGNAL()与SLOT()是Qt定义的两个宏,它们只是返回其参数的C语言风格的字符串(const char *)。因此以下关联信号与槽的两条语句是等价的。

1.connect(button,SIGNAL(clicked()),this,SLOT(showArea()));

2.connect(button,”clicked()”,this,”showArea()”);
信号与槽机制的好处

降低耦合度,激发信号的Qt对象不需要知道是哪一个对象的哪一个槽需要接受它发出的信号,它只需要做的是在适当的时间发送适当的信号就可以了。同样接收信号的那个对象的槽也不需要知道是哪个对象关联了自己,它只需要做的是在接收信号后完成相应的响应即可。即使发送信号的对象被删除也不会影响接受信号的对象完成响应。
类型安全,需要关联的信号与槽的签名必须是等同的,即信号的参数类型和参数个数与接受该信号的槽的参数类型和参数个数相同。接受信号的槽的参数的个数可以少于信号的参数个数,但缺少的参数必须是信号参数的最后几个。否则参数不匹配,编译器就会报错。
信号与槽机制的缺点

损失了一部分性能,一般通过传第一个信号来调用槽函数将会比直接调用非虚函数运行速度慢10倍。
与创建堆对象的new操作与删除堆对象的delete操作相比,信号与槽的机制的运行代价只是它们的很小的一部分,这点性能损耗对于实时应用程序是可以忽略的。
2.Qt 5模板库、工具类及控件

主要介绍Qt的字符串类QString,Qt容器类,QVariant类及Qt常用的算法和正则表达式,然后概括介绍常用的控件名称及其用法。
2.1 字符串类

Qt提供了两种字符串,一种是C语言风格的以”\0”字符结尾的字符数组,另一种是字符串类String,而Qt字符串类QString的功能更强大。

QString类保存16位的Unicode值,提供了丰富的操作、查询和转化的函数,该类还进行了隐式共享(implicit sharing)、高效的内存分配策略等多方面的优化。
2.2.1 操作字符串
2.2.2 查询字符串数据
2.2.3 字符串的转换
2.2 容器类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我没有找到关于"Qtcreate"的相关信息。请问您是指"Qt Creator"吗?Qt Creator是一个集成开发环境(IDE),用于开发Qt应用程序。它支持多种平台,包括iOS、Android和WinRT。通过Qt Creator,您可以编写和调试代码,并使用Qt的字符串类,如QString和QByteArray,来处理字符串。QString是Qt最常用的字符串类,而QByteArray适用于处理以'\0'结尾的传统字符串。QByteArray可以处理多字节编码的字符串,如UTF-8、GBK和Big5。在使用QByteArray,程序员需要确定所使用的字符串编码格式。此外,QByteArray还使用了隐式共享机制来提高运行效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Qt Create 笔记 (一) 1.QString 2.QByteArray](https://blog.csdn.net/linbounconstraint/article/details/51497782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Game Programming Using QT(PACKT,2016)](https://download.csdn.net/download/vanridin/9431499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值