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下生成的头文件(注意project.h 不是ui开头的),如果有#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
#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 当前文件 重新解析一下 然后进行编译运行
QMessageBox::information(this, "OK", "GOOD INPUT");
提示QMessageBox 不是可用类 cpp加头文件#include