作者:虛壞叔叔
早餐店不會開到晚上,想吃的人早就來了!😄
依賴的QT環境安裝和信号槽機制的講解
一、QT源碼和SDK下載下傳
http://download.qt.io/archive 不可靠
http://download.qt.io 注冊下載下傳
QT有2種程式設計方式,一種是基于
QtCreator
,另一種是基于
Visual Studio
。如果你是在
Linux
或者
Mac
,可以直接使用
QtCreator
,如果是在
Windows
,推薦使用
VS
。
為什麼不用
QtCreator
,相對于其他的開發內建環境而言,你在實際開發中用過
QtCreator
就會發現會覺得很好用,但是相對于vs而言就是個弟弟。比如項目基于
Qmake
,它經常有些編譯沒生成,會出現一些
bug
,相對而言
vs
的
bug
少很多,而且
vs
調試和配置第三方庫的時候,更加便捷。
如果用vs的話,需要下載下傳
vs-addin
:
download.qt.io/archive/vsaddin/
qt的話建議下載下傳5.9,它是長期維護版本:
http://download.qt.io/archive/qt
二、QT環境安裝
輕按兩下安裝
5.11
版本:
點選下一步後選擇一個安裝目錄:
在vs下開發,勾選這MSVC:
Sources
可以勾選也可以不勾選,勾選就是可以調試到
QT
的源碼。
後面就是一路預設安裝。同意協定即可。
三、QT安裝内容介紹
QT
內建開發環境
QTCreator
在這個路徑下:
D:\Qt\Qt5.9.8\Tools\QtCreator
SDK
的路徑在這個位置:
D:\Qt\Qt5.9.8\5.9.8\msvc2015_64
四、 Vs-addin
安裝
Vs-addin
直接輕按兩下安裝即可完成安裝完成後,打開
vs2015
就可以看到這個菜單:
點選
QT Options
就可以設定:
将
sdk
設定為
64位
即可:
五、建立一個FirstQt項目
使用Qt GUI Application 建立一個
FirstQt
項目
選擇你需要使用的
QT
庫,預設即可:
建立一個主視窗應用程式,預設即可
建立完成後,編譯運作:
可以看到建立了一個這樣的視窗。
打開主函數入口:
#include "FirstQT.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);// 整個應用程式
FirstQT w; // 視窗
w.show(); // 顯示視窗
return a.exec(); // 消息隊列處理
}
打開
FirstQT.h
:
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_FirstQT.h"
class FirstQT : public QMainWindow // 繼承QMainWindow主視窗
{
Q_OBJECT
public:
FirstQT(QWidget *parent = Q_NULLPTR);
private:
Ui::FirstQTClass ui;
};
六、QT界面控件添加
輕按兩下
FirstQT.ui
可以打開界面設計器。
這裡有很多控件,可以拖動一個按鈕到主視窗,然後用信号槽給控件添加事件:
為按鈕添加
click
的響應事件:
儲存後,切換到
visual studio 2015
,運作程式,可以看到控件。
為什麼在
Qt設計師
修改的界面,可以展現在
visual studio 2015
中呢?
它會調用
Uic
程式 将
FirstQt.ui
編譯生成
moc_FirstQt.cpp
檔案。這個中間檔案自動的生成了界面的代碼.
七、QT信号槽實作控件事件的綁定
來到
FirstQt.h
中添加槽函數
Test()
:
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_FirstQT.h"
class FirstQT : public QMainWindow // 繼承QMainWindow主視窗
{
Q_OBJECT
public:
FirstQT(QWidget *parent = Q_NULLPTR);
public slots:
void Test();
private:
Ui::FirstQTClass ui;
};
FirstQt.cpp
中添加實作:
#include "FirstQT.h"
#include <iostream>
using namespace std;
FirstQT::FirstQT(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
void FirstQT::Test()
{
cout << "FirstQt::Test()" << endl;
}
修改為控制台輸出友善示範:
運作: