1. 下載 Qt5
下載以下軟件:(不管你是 32 位還是 64 位,都下載這幾個文件)
百度雲盤: 鏈接:https://pan.baidu.com/s/1zeRZwKYcPBub3GqnEHtkDA 密碼:4cuo
(1)Qt 開發包
qt-opensource-windows-x86-msvc2013-5.6.2.exe
(2)Qt VS Tools 插件
qt-vs-tools-msvc2013-2.1.1.vsix
注:從 VS2013 開始,Qt for VS 插件開始使用新版本(後綴是.vsix),逐漸淘汰原來的舊版本(qt-vs-addin-1.2.x.exe)
注:現在 Qt 的官網爲 http://download.qt.io/
其中,qt 在這裏下載
http://download.qt.io/official_releases/qt/5.6/5.6.2/
qt vs addin 插件在這裏下載
http://download.qt.io/official_releases/vsaddin/
2. 安裝 Qt5
假設你已經安裝好了 VS2013
2,1 安裝 Qt 開發包
雙擊 qt-opensource-windows-x86-msvc2013-5.6.2.exe,放在默認安裝位置。建議勿做改變。
2.2 安裝 Qt VS Tools 插件
先關閉 VS2013,再雙擊運行 qt-vs-tools-msvc2013-2.1.1.vsix 開始安裝。
3. 在 VS201 配置QT VS TOOLS
打開VS2013,可以在菜單裏找到 QT VS TOOLS
點 QT VS TOOLS 下的Qt Options,添加 C:\Qt\Qt5.6.2\5.6\msvc2013
4. 安裝和配置 Visual Assist X
先關閉 VS2013,然後安裝 Visual Assist X 2018。
(1) 安裝完後,VS2013 裏有如下菜單:
在菜單裏執行 VASSIST X | Visual Assist Options,然後按下面進行。
(1) C/C++ Directories ,不改也可以(默認是 Project defined)。這裏我們改爲 custom 吧, 如下圖:
再切換右邊的 show directories for,選擇 Other include files,添加幾個 qt 的目錄
(2) Performance,上面選擇 Watch for externally … ,下面點 Rebuild
(3)關閉 VS,然後重啓 VS2013
配置完畢!重啓 VS2013!
5. 常見問題彙總
(1)爲什麼在 VS 裏,雙擊*.ui 的時候打不開設計器( Qdesigner) 呢?
切換到 Qt Designer 目錄(如 C:\Qt\Qt5.6.2\5.6\msvc2013\bin ) , 把Qt5WebEngineWidgets.dll 隨便改個名字,例如 Qt5WebEngineWidgets222.dll , 之後就可以打開 QtDesigner 了。
(2)Qt5 帶不帶 HTML 網頁形式的文檔? 也有的,自 5.6.2 版本以後有。
在 C:\Qt\Qt5.6.2\Docs\Qt-5.6\qtdoc 下找 index.html (注:Qt5.5 沒有 HTML 文檔)
(3)有沒有其他形式查看 Qt 文檔 ?
在 Windows 菜單裏,有一個 Assistant,如下圖,運行它將可以在這裏查看開發文檔。
(4)Generated Files 下的 ui_xxx.h 頭文件爲什麼打不開呢?
這個文件是自動生成的。先點 F7 編譯,然後這個文件就能打開了。
(5) Ui_xxx.h在生成後要不要再執行 visual assist 的 reparse了呢?
一般是不需要的。但是最新vsix插件生成的頭文件用了#param once,這導致不能reparse了!!!
注意它生成的頭文件: 在Header Files下生成的頭文件,如果有#prama once這句,則會產生麻煩,解決辦法:
-->先刪除 #param once 這一行
-->再添加我推薦的頭文件保護:
#ifndef __AAA_H
#define __AAA_H
....
#endif
事件機制:
Qt中的事件處理機制叫“信號和槽”signal & slot
其理論模型爲:
對象a中有一個信號signal : XXX (代表一個事件)
對像b中有一個槽slot: YYY (事件處理函數)
事先把它們連接起來
connect(a, XXX, b, YYY);
然後,當a中事件發生時,b中的處理函數就會被
調用。
當點擊"顯示"按鈕時,在文本框中顯示文本
"hello,world"
(1) 查文檔,找到“按鈕被點擊”事件對應的信號
QPushButton => QAbstractButton
在其父類找到了一個signal
void clicked ( bool checked = false )
(2) 定義一個處理函數,參數類型應該和signal的參數
相同。
// 頭文件 test.h
#ifndef __AAA_H
#define __AAA_H
#include <QtWidgets/QMainWindow>
#include "ui_test41.h"
class test41 : public QMainWindow
{
Q_OBJECT
public:
test41(QWidget *parent = Q_NULLPTR);
private slots:
int OnShowClicked(bool checked);
private:
Ui::test41Class ui;
};
#endif
// cpp文件 test.cpp
#include "test41.h"
test41::test41(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(
ui.pushButton, // 對象a, 必須是一個QObject*類型 button 名
SIGNAL(clicked(bool)), // a的信號
this, // 對象b
SLOT(OnShowClicked(bool)) // b的槽
);
}
int test41::OnShowClicked(bool checked)
{
ui.plainTextEdit->setPlainText("hello world");
return 0;
}
pushButton顯示不可用時
打開ui_test.h 選擇 vassistx 中tools中 reparse 當前文件 重新解析一下 然後進行編譯運行