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()");
new
操做与删除堆对象的delete
操做相比,信号与槽的机制的运行代价只是它们的很小的一部分,这点性能损耗对于实时应用程序是能够忽略的。主要介绍Qt的字符串类
QString
,Qt容器类,QVariant
类及Qt经常使用的算法和正则表达式,而后归纳介绍经常使用的控件名称及其用法。
Qt提供了两种字符串,一种是C语言风格的以
"\0”
字符结尾的字符数组,另外一种是字符串类String
,而Qt字符串类QString
的功能更强大。
QString
类保存16位的Unicode值,提供了丰富的操做、查询和转化的函数,该类还进行了隐式共享(implicit sharing)、高效的内存分配策略等多方面的优化。