Qt开发环境搭建完整指南
Qt开发环境搭建完整指南
Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面、移动和嵌入式设备的软件开发。本文将详细介绍如何搭建Qt开发环境,包括工具选择、SDK下载与安装、环境配置以及项目创建等步骤,适合Qt开发初学者参考。
一、Qt开发工具的概述
要搭建Qt开发环境,需要安装3个部分:
- C++编译器(例如gcc、cl.exe等)
- Qt SDK(软件工具开发包)
- 需要有一个Qt的集成开发环境(IDE)
集成开发环境主要有下面这三种:
Qt官方提供的Qt Creator:最容易入门,最容易上手的方式,开箱即用,不需要任何额外的配置。虽然Qt Creator使用过程中存在不少bug(有些bug非常影响使用体验),但整体来说,用起来挺方便的,比较适合初学者。
Visual Studio:功能更强,但是需要额外的配置更多,更容易出错。有些公司开发商业Qt程序时,可能会使用VS。需要给VS安装Qt插件,并且需要把Qt SDK使用VS的编译器重新编译。
Eclipse:这并非只是Java IDE,本身是一个IDE平台,可以搭配不同的插件构成不同的IDE。目前Eclipse市场份额受到的冲击很大,重量级工具有JetBrains,轻量级工具有VSCode。
一般Qt SDK里已经内置了C++编译器,比如Windows版本的Qt SDK里就内置了MinGW编译器。并且Qt SDK中也包含了Qt Creator。说是要安装3个部分,其实只需要安装1个Qt SDK,另外2个就都有了。
二、下载Qt SDK
Qt 下载官网:http://download.qt.io/archive/qt
这里我选择5.14的版本,不会太新,也不会太老。
这些小版本随便选一个就行,我选的是5.14.0。
选择下载qt-opensource-windows-x86-5.14.0.exe,这就是Qt SDK。
注意: 由于本文写作时间较早,建议读者根据实际情况选择最新稳定版本的Qt SDK进行下载。
三、安装Qt SDK
接下来的安装过程是断网安装的,因为我不想注册Qt账号。
找到下载好的文件,双击开始安装。
点击下一步。
继续下一步。
选择安装路径,注意安装路径不能出现中文,否则即使安装成功也无法使用。在安装软件时,所在的目录,不要带中文、特殊符号、空格,否则可能会出错。
勾选这几个工具。
同意许可。
点击下一步。
点击安装。
完成安装。
四、配置环境变量
在开始菜单搜索环境变量,点击编辑环境变量。
点击环境变量
双击Path,修改用户变量或者系统变量都可以。
找到安装Qt SDK的路径中找到这个路径,复制路径。
双击空白格子,粘贴路径,然后点确定。
最好点击右测的上移键让Qt路径往上靠一点。
点击确定。
点击确定。
为啥要配置环境变量:
让操作系统/Qt Creator工具,能够找到Qt SDK中提供的exe。
在运行Qt程序时,能够找到对应的.dll动态库。
五、认识Qt SDK中的重要工具
这几个就是Qt SDK中自带的工具程序。
Assistant是Qt提供的离线版官方文档。
Designer是图形化的设计界面的工具,可以通过拖拽控件的方式来快速生成一个界面,一般搭配Qt Creator来使用。
Linguist的作用是支持国际化,有的时候,写的程序是要和国际接轨。允许单独创建语言配置文件,把界面上需要用到的各种文字都配置到文件中,并且在文件中提前把各种语言的翻译都配置进去,就可以起到“一键式切换语言”效果。
Qt Creator是Qt的集成开发工具,是以后学习Qt过程中的主要工具。
六、创建项目
接下来尝试在Qt Creator中创建一个Qt项目。
点击新建文件或项目。
Application指的是应用程序,如果使用Qt写一个GUI程序,就应该选择这个。
取名称,创建路径。
选择qmake。Build System是构建系统的意思,通过Qt写的程序,涉及到一系列的“元编程”技术。Qt框架会在编译的时候,自动调用一系列的生成工具,基于你自己写的代码,生成一系列其他的C++代码。Qt提供的工具就是下面三种,我们主要使用的是qmake
下面我们要关注Base class。使用Qt Creator创建项目,会自动生成一些代码出来,生成的代码就包含一个类,此处就是要选择自动生成的类的父类是谁。
主要有三种选择。QMainWindow是完整的应用程序窗口(可以包含菜单栏、工具栏、状态栏.....),QWidget表示一个控件(窗口上的一个具体的元素,输入框、按钮、下拉框......),QDialog表示一个对话框,
我们选择的是QWidget。Class name就是自动生成的类的的类名,Base Class则是它的父类。勾选Generate form后就可以使用Designer了,会产生Form file
这个是和国际化相关的,选择语言与翻译文件,暂时不关注。
选择基于哪个编译器的Qt SDK来构建后序代码。
如果需要把代码提交到码云或gitee上,就勾选。
点击左下角的三角符号运行。
运行后创建了这样一个窗口。
七、项目代码解释
接下来看一下刚刚创建好的空白项目里都有生成了哪些东西。
首先映入眼帘的是main.cpp。
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])//命令行参数
{
QApplication a(argc, argv);//编写一个Qt的图形化界面程序,一定需要有QApplication对象
Widget w;//创建一个控件对象
w.show();//让控件显式出来,hide()方法是让控件隐藏,这些方法都是!QWidget(父类)提供的
return a.exec();//exec表示让程序执行起来
}
接下来看看widget.h,这里面是Widget类的声明。Qt的设定,使用Qt中内置的类,包含的头文件的名字就是和类名是一样的。后序写代码的原则,一个类先拿过来用,如果能直接用,说明对应的头文件已经被间接包含了,无需显式包含。如果这个类提示找不到定义,此时再显式地包含头文件。
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget//Widget继承自QWidget
{
Q_OBJECT //Qt内置的宏,展开后会生成一大堆代码
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;//和form file密切相关
};
#endif // WIDGET_H
再看看widget.cpp。
#include "widget.h"
#include "ui_widget.h" //Form file被qmake生成的头文件
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this); //将from file生成的界面和当前widget关联起来
}
Widget::~Widget()
{
delete ui;
}
双击Forms中的widget.ui后,就会进入设计页面。
双击ui文件,此时Qt Creator会调用Qt Designer,打开ui文件,进入图形化的界面编辑器。
此时点回左侧边栏的编辑按钮,此时显示的内容就是ui文件的本体了。
还有一个Empty.pro文件,这是Qt项目的工程文件。.pro文件就类似于Linux中的makefile
QT += core gui //要引入的Qt的模块,后面学习到一些内容时可能会修改这里
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
widget.cpp
HEADERS += \
widget.h
FORMS += \
widget.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
来到项目的存储路径,看到下面这个文件夹。运行一次程序后,就会产生这个文件夹,这个文件夹里就是该项目运行过程中生成的一些临时文件。
里面有这些文件。
Empty.exe就是项目最终生成的可执行程序,双击运行效果如下。