前提: windows 平台,有 vc++ 经历或 windows c++ 游戏开发经历。
仅仅关注必要的,达到可以面试初级 qt 开发的程度。
安装:不用下源码安装,直接找 Qt exe 安装包。比如这个,
http://download.qt.io/archive/qt/5.8/5.8.0/qt-opensource-windows-x86-mingw530-5.8.0.exe
http://pan.baidu.com/s/1cpjQEi
helloworld:
新建默认项目,最终大概如下:
![ae6a51c5dc1cbb6323f19c52267166b6.png](https://img-blog.csdnimg.cn/img_convert/ae6a51c5dc1cbb6323f19c52267166b6.png)
这个就是 qt creator,如果不知道,还以为是很高端的东西,其实就是个 ide 。
F1 查看系统类说明。
按 F5 运行(编译并运行),我这边看到反应比较慢,可能需要加载依赖。
![226c9c57ccafc0db4e1980a73bf2f42e.png](https://img-blog.csdnimg.cn/img_convert/226c9c57ccafc0db4e1980a73bf2f42e.png)
直接看编辑器:
点击 mainwindow.ui 或这种后缀的文件,进入编辑器。
![3e3dfa932b939d1d131e4589f2337c01.png](https://img-blog.csdnimg.cn/img_convert/3e3dfa932b939d1d131e4589f2337c01.png)
mfc 的味道,忽略
留意到 ui_mainwindow.h (路径在上级目录下 build-工程名-xxxx 文件夹下,例如我的路径在D:UsersAdministratorDocumentsbuild-first-Desktop_Qt_5_8_0_MinGW_32bit-Debugui_mainwindow.h),会发现,有对应 ui 编辑器的代码,每次编译后会自动生成,一时也不太确定能不能修改这文件。
![4c1e3bfb498525aa9036c6ba6f994a59.png](https://img-blog.csdnimg.cn/img_convert/4c1e3bfb498525aa9036c6ba6f994a59.png)
个人感觉 Qt 应用开发框架和 MFC 框架类似,和游戏框架类似,一开始不必深入。
log 使用 qDebug;
ctrl + b 编译; ctrl + r 运行(不调试); F5 调试运行;
Qt 窗口:
QWidget 所有窗口基类。提供平时关心的位置大小标题焦点等方法。
信号和槽
特别的地方来了, Qt 独有的内容:
https://zhuanlan.zhihu.com/p/28370186 这个教程比较详细。
总结就是:
信号就是事件消息,槽就是函数,
注册事件用 connect
触发信号用 emit
既然用 Qt creator ,所以就用 creator 链接(注册)信号和槽
先实现一个方法 test1 作为槽(不是必须的,但如果不实现,运行会报错),
然后点击下面按钮或 F4
![4af96ac4211b99c5081475284341b53f.png](https://img-blog.csdnimg.cn/img_convert/4af96ac4211b99c5081475284341b53f.png)
应该要切换一下下面所示 Signals & Slots Editor 顾名思义。
![6db603ce0f76beaface9071c99207344.png](https://img-blog.csdnimg.cn/img_convert/6db603ce0f76beaface9071c99207344.png)
“拖控件”
![eaff65c6333038682059b04f96f641d4.png](https://img-blog.csdnimg.cn/img_convert/eaff65c6333038682059b04f96f641d4.png)
发现目的空白, 勾选左下角框可以看到出现 MainWindow 基类已经实现的槽,但这里我们用 MainWindow::test1 作为槽。
![fbe4e6ab9a7c481b03315ec7227f4eb1.png](https://img-blog.csdnimg.cn/img_convert/fbe4e6ab9a7c481b03315ec7227f4eb1.png)
点击编辑,添加 test1 。 然后发现有自定义的槽了。
![c9ea05347214b6e436f1bf1a496c1446.png](https://img-blog.csdnimg.cn/img_convert/c9ea05347214b6e436f1bf1a496c1446.png)
保存后 F5 运行调试,如无意外,点击按钮后 test1 被调用了。
再看看 ui_mainwindow.h ,会发现多了一句:
QObject::connect(pushButton, SIGNAL(clicked()), MainWindow, SLOT(test1()));
布局
![2989303b2fe0177fddaa80bd4ddac419.png](https://img-blog.csdnimg.cn/img_convert/2989303b2fe0177fddaa80bd4ddac419.png)
线程
直接进阶,不只做个 hello world 。