目錄
前言:
一、Qt Creator 使用技巧?
二、 Qt的元對象系統
2.1 Qt的元對象系統概述
2.1.2 屬性系統
?2.1.3 信號與槽
?2.1.4 對象數
?2.2? 容器類
三、常用界面組件使用
3.1 QString字符串操作
前言:
? ? ? ? 學習筆記的內容來自B站up主阿西拜編程
《Qt6 C++開發(fā)指南 》2023(上冊,完整版)_嗶哩嗶哩_bilibili《Qt6 C++開發(fā)指南 》2023(上冊,完整版)共計84條視頻,包括:00書籍介紹、1.1Qt簡介、1.2Qt6安裝等,UP主更多精彩視頻,請關注UP賬號。https://www.bilibili.com/video/BV1km4y1k7CW/
嗶哩嗶哩_bilibilihttps://www.bilibili.com/cheese/play/ss5138
一、Qt Creator 使用技巧?
? ? ? ? ? ? ? ? ? ? ? 快捷鍵使用
F4 | 在同名的頭文件和源程序文件之間切換 |
F2 | 變量:跳轉到聲明;函數:聲明和定義切換 |
Ctrl+Shift+R |
該名稱,將所有用到這個字符的地方替換掉 |
Ctrl+I | 為選中的文本自動縮進 |
Ctrl+/ | 注釋或取消注釋 |
F1 | 為光標所在的位置顯示幫助文檔 |
Ctrl+Shift+S | 文件全部保存 |
Ctrl+F | 調出查找和替換對話框 |
F3 | 查找下一個 |
Ctrl+B | 編譯當前項目 |
F5 | 開始調試 |
F10 | 單步(略過)調試,執(zhí)行當前程序語句 |
F11 | 單步(跟蹤)調試,如果當前行里有函數,就跟蹤進入函數 |
F9 | 設置或取消斷點 |
二、 Qt的元對象系統
2.1 Qt的元對象系統概述
????????QT中引入元對象系統對標準C++語言進行了擴展。
概述
????????●????????Qobject類是所有使用元對象系統的類的基類
????????●?????????必須在一個類的開頭部分插入宏Q_OBJECT,???????????????????才可以使用元對象系統的特性。???????
???????????????????當?MoC發(fā)現類中定義了Q OBJECT宏時,會為其生成相應的C++源文件
????????●?????????元對象編譯器 (Meta-object Compiler,MOC) 是一個預處理器,先將Qt的特性
? ? ? ? ?? ? ? ? ? 程序轉換為標準C++程序,在由標準C++編譯器進行編譯
Object類:
????????元對象系統的特性是通過QObject的一些函數來實現的。
????????●?元對象 (meta object): 每個QObject及其子類的實例都有一個元對象 (靜態(tài)變
量staticMetaObject) 。函數metaobject()可以返回它的指針。
???????●??類型信息: Qobject的inherits()函數可以判斷繼承關系。
???????●? 動態(tài)翻譯: 函數tr()返回一個字符串的翻譯版本。
???????●? 對象樹:表示對象間從屬關系的樹狀結構。Qobject提供了parent()、children().
findChildren()等函數。對象樹中的某個對象被刪除時,它的子對象也將被刪除。
???????●? 信號和槽:對象間的通信機制。
???????●??屬性系統: 可以使用宏Q_PROPERTY定義屬性,Qobject的setProperty()會設置屬
性的值或定義動態(tài)屬性; property函數會返回屬性的值。
2.1.2 屬性系統
屬性系統:
在oobject的子類中可以通過Q_PROPERTY宏定義屬性。
?2.1.3 信號與槽
信號與槽是元對象系統支持的,對象間通信所采取的機制
connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));
最后一個參數:Qt::ConnectionType表示了信號與槽槽之間的關聯方式
????????Qt::AutoConnection (缺省值):自動確定關聯方式。
????????Qt::DirectConnection:信號被發(fā)射時,槽立即執(zhí)行,槽函數與信號在同一線程
????????Qt::QueuedConnection: 事件循環(huán)回到接收者線程后執(zhí)行槽,槽與信號在不同線程信號線程會被阻塞直
????????Qt::BlockingQueueConnection: 與Qt::QueuedConnection相似,到槽執(zhí)行完畢。當槽函數與信號在同一線程,會造成死鎖。
disconnect()函數的使用
1.????????解除與一個sender所有signal的連接:
? ? ? ? ? ?disconnect(myobject,nullptr,nullptr,nullptr);//靜態(tài)函數
? ? ? ? ? ?myobject->disconnect();//成員函數
2.????????解除與一個特定信號的所有連接:
? ? ? ? ? ?disconnect(myobject,SIGNAL(mysignal()),nullptr, nullptr);
? ? ? ? ? ?myobject->disconnect(SIGNAL(mySignal()));
3.????????解除與一個特定receiver的所有連接:
? ? ? ? ? ?disconnect(myobject, nullptr,myReceiver,nullptr);
? ? ? ? ? ?myobject->disconnect(myReceiver);
4.????????解除一對特定的信號和槽的連接:
? ? ? ? ? ?disconnect(lineEdit,&QLineEdit::textChanged,label,&QLabel::setText);
?2.1.4 對象數
對象樹
Qobject以對象樹的形式組織自己,其構造函數里有一個parent參數。當用另一個
對象作為父對象創(chuàng)建一個QObject時,它會被添加到父對象的children()列表中,而
當父對象被刪除時是時,它會被刪除。這種方法非常適合GUI對象的需求。例如,
QShortcut(鍵盤快捷鍵)是相關窗口的子對象,因此當用戶關閉該窗口時,快捷鍵
也會被刪除。
?2.2? 容器類
?????????Qt庫提供了一組通用的基于模板的容器類??捎糜诖鎯χ付愋偷捻?。例如,如果需要一個大小可變的QString數組,可以使用QList<QString>或QStringList。
????????Qt容器類成比STL容器更輕巧(速度和存儲優(yōu)化) 、更安全(線程安全) 、更易使用。如果不熟悉STL,或者更喜歡用“Qt的方式”寫代碼,可以選用Qt容器類。
????????Qt容器提供了用于遍歷的迭代器。STL風格的迭代器是最高效的迭代器,可以與Qt和STL的泛型
????????算法一起使用。提供java風格的迭代器是為了向后兼容。
三、常用界面組件使用
3.1 QString字符串操作
QString簡介:? ? ? ?
????????QString沒有父類,QString存儲一個由16位QChar組成 (一種Unicode編碼,
一個漢字就是一個字符)字符串,每個QChar對應一個UTF-16編碼單元。(編碼值大于
65535的Unicode字符使用兩個連續(xù)的QChar存儲。)
????????UTF-8:最少用1個字節(jié)編碼,可以使用1~4個字節(jié)編碼。與Latin1編碼兼容,被廣泛使用Qt Creator存儲的源碼默認使用UTF-8編碼。
????????UTF-16: 最少使用2個字節(jié)編碼,可以使用2或4個字節(jié)編碼。QString的創(chuàng)建和初始化:
????????將const char *傳遞給它的構造函數。例下面的代碼創(chuàng)建了一個包含"Hello"的長度為5的
OString:????????????????????????????????????????????????????????QString str ="Hello"????????
QString字符串的索引:文章來源:http://www.zghlxwxcb.cn/news/detail-810509.html
可以使用元素索引操作符“[]” 或者 接口函數at()。文章來源地址http://www.zghlxwxcb.cn/news/detail-810509.html
到了這里,關于學習Qt筆記的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!