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

相關文章
相關標籤/搜索