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)、高效的內存分配策略等多方面的優化。