Qt学习笔记(一)

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的槽产生响应。this

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

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 容器类

相关文章
相关标签/搜索