1、qt下載:http://download.qt.io/archive/qt/5.12/5.12.0/qt-opensource-windows-x86-5.12.0.exe
2、執行qt-opensource-windows-x86-5.12.0.exe,在Qt Account - Your unified login to erverything Qt頁面選擇Skip;
Qt 5.12.0 設置Qt->Qt 5.12.0 勾選MSVC 2017 32-bit、MSVC 2017 64-bit、 UWP ARMv7(MSVC 2017)、UWP x64(MSVC 2017)、 UWP x86(MSVC 2017)即可。具體的模塊說明如下:
MinGW 7.3.0 64 bit 編譯器模塊。MinGW 是 Minimalist GNU for Windows 的縮寫,MinGW是 Windows 平臺上使用的 GNU 工具集導入庫的集合。
用于 UWP 編譯的模塊。UWP 是 Windows 10 中 Universal Windows Platform 的簡稱,有不同編譯器類型的 UWP。
用于 windows 平臺上的 MSVC 編譯器模塊,如 msvc2015 32-bit 和 msvc2015 64-bit 等。要安裝 MSVC 編譯器的模塊,需要計算機上已經安裝相應版本的 Visual Studio。
用于 Android 平臺的模塊,如 Android x86 和 Android ARMv7。
Sources 模塊是 Qt 的源程序。
Qt Charts 是二維圖表模塊,用于繪制柱狀圖、餅圖、曲線圖等常用二維圖表。
Qt Data Visualization 是三維數據圖表模塊,用于數據的三維顯示,如散點的三維空間分布、三維曲面等。
Qt Purchasing、Qt WebEngine、Qt Network Auth(TP)等其他模塊,括號里的 TP 表示技術預覽(Technology Preview)。
Qt Scritp(Deprecated)是腳本模塊,括號里的“Deprecated”表示這是已經過時的模塊。
“Tools”節點下面是一些工具軟件,一般不用勾選默認的就可以。內容如下:
Qt Creator 4.8.0 是用于 Qt 程序開發的 IDE。
MinGW 5.3.0 是 MinGW 編譯工具鏈。
Strawberry Perl 是一個 Perl 語言工具。
3、安裝vs2017的qt插件:Tools-->Extensions and Updates-->Online,搜索Qt,找到Qt Visual Studio Tools下載安裝
4、配置Qt VS Tool的環境
Qt VS Tools點擊Qt Options,Add按鈕,Path按鈕找選擇qt安裝目錄下的MSVC 編譯器模塊路徑。
5、Qt的信號槽
qt信號槽是觀察者模式的一種實現,特性如下:
A、一個信號就是一個能夠被觀察的事件,或者至少是事件已經發生的一種通知;
B、一個槽就是一個觀察者,通常就是在被觀察的對象發生改變的時候——也可以說是信號發出的時候——被調用的函數;
C、信號與槽的連接,形成一種觀察者-被觀察者的關系;
D、當事件或者狀態發生改變的時候,信號就會被發出;同時,信號發出者有義務調用所有注冊的對這個事件(信號)感興趣的函數(槽)。
信號和槽是多對多的關系。一個信號可以連接多個槽,而一個槽也可以監聽多個信號。
信號槽與語言無關,有多種方法可以實現信號槽,不同的實現機制會導致信號槽的差別很大。信號槽術語最初來自 Trolltech 公司的 Qt 庫,由于其設計理念的先進性,立刻引起計算機科學界的注意,提出了多種不同的實現。目前,信號槽依然是 Qt 庫的核心之一,其他許多庫也提供了類似的實現,甚至出現了一些專門提供這一機制的工具庫。
信號槽是Qt對象以及其派生類對象之間的一種高效通信接口,是Qt的核心特性,也是Qt區別與其他工具包的重要地方。信號槽完全獨立于標準的C/C++語言,因此要正確的處理好信號和槽,必須借助于一個成為MOC(Meta Object Compiler)的Qt工具,MOC工具是一個C++預處理程序,能為高層次的事件處理自動生成所需要的附加代碼。
MFC中的消息機制沒有采用C++中的虛函數機制,原因是消息太多,虛函數開銷太大。在Qt中也沒有采用C++中的虛函數機制,而是采用了信號槽機制,原因與此相同。更深層次的原因上,多態的底層實現機制只有兩種,一種是按照名稱查表,一種是按照位置查表。兩種方式各有利弊,而C++的虛函數機制無條件的采用了后者,導致的問題就是在子類很少重載基類實現的時候開銷太大,再加上界面編程中子類眾多的情況,基本上C++的虛函數機制效率太低,于是各家庫的編寫者就只好自謀生路,當然,這其實是C++語言本身的缺陷。
qt的事件函數要自己手動添加,命名格式些函數是有命名規則的,"on_"后面是控件的設計名字(objectName,步驟三中,紅色字體部分),然后后面是“_clicked()”,你在設計的時候最好遵循這種命名格式,這樣你就可以省掉4.2的步驟(2.連接信號與槽.),也就是說,你如果遵循這個命名格式的話你就不用寫connect()函數了,因為這種定義讓系統能夠自動識別信號與槽的連接。
如果沒有按照命名規則來命名槽函數,那么就要進行信號與槽的連接,所謂信號與槽的連接就是,一個信號send出來,要有一個槽接收這個信號,然后執行相應任務,這個過程需要連接的,如果不設計這個連接,即使Button send出一個click信號,也沒有什么東西去執行click后的任務。
在qt工程的ui文件雙擊打開,添加控件和信號槽。