Qt5 工具包介绍
最后修改于 2023 年 10 月 18 日
在 Qt5 教程的这一部分,我们将介绍 Qt5 库。我们安装 Qt5 库并创建我们的第一个小型 Qt5 应用程序。
Qt 最初由挪威软件公司 Trolltech 开发。2008 年,该公司被 Nokia 收购。2012 年 8 月,芬兰开发公司 Digia 从 Nokia 手中收购了 Qt 软件技术。与此同时,创建了一个 Qt 项目,该项目继续开发开源 Qt。开源 Qt 工具包的网站可以在 qt.io 找到。Qt 目前由 Digia 的子公司 Qt 公司和 Qt 项目共同开发,在开源治理下,涉及个人开发人员和公司。
Qt
Qt 是一个跨平台的应用程序开发框架。一些使用 Qt 开发的知名应用程序有 KDE、Opera、Google Earth、Skype、VLC、Maya 或 Mathematica。Qt 于 1995 年 5 月首次公开发布。它是双重许可的。它既可以用于创建开源应用程序,也可以用于创建商业应用程序。Qt 工具包是一个非常强大的工具包。它在开源社区中享有盛誉。全球成千上万的开源开发人员使用 Qt。
下载和解压缩
我们进入 download.qt.io/official_releases/qt/ 页面。(由于下载链接过去经常发生变化,您可能需要搜索当前链接。)我们选择最新的 Qt 5.x 源代码。在本教程创建时,最新的源代码是 Qt 5.5.1。接下来,我们将从源代码安装 Qt。
$ ls qt-everywhere-opensource-src-5.5.1.tar.gz qt-everywhere-opensource-src-5.5.1.tar.gz
从下载页面,我们下载 Qt5 源代码。我们使用 TAR 文件。(我们省去了麻烦。ZIP 文件有 Windows 换行符。)
$ tar -xzvf qt-everywhere-opensource-src-5.5.1.tar.gz
该命令会将所有文件解压缩到目录 qt-everywhere-opensource-src-5.5.1/。
$ du -hs qt-everywhere-opensource-src-5.5.1 2.0G qt-everywhere-opensource-src-5.5.1
该目录的大小现在是 2 G。
$ cd qt-everywhere-opensource-src-5.5.1/
我们进入创建的目录。在 README 文件中有安装说明。安装简单直接,但需要相当长的时间。
从源代码安装
在开始构建 Qt5 之前,我们可能需要安装一些额外的库。例如,如果我们想从 Qt 连接到 MySQL,我们需要在我们的系统上安装 libmysqld-dev。
我们以经典方式安装库。在 Unix 系统上,软件的安装分为三个步骤。
- 配置
- 构建
- 安装
$ ./configure -prefix /usr/local/qt5 Which edition of Qt do you want to use ? Type 'c' if you want to use the Commercial Edition. Type 'o' if you want to use the Open Source Edition.
首先我们运行 configure 脚本。该脚本将询问我们是否需要 Qt5 库的商业版或开源版。该脚本将为我们的机器类型配置库。默认情况下,Qt 将安装在 /usr/local/Qt-5.5.1/ 目录中。这可以通过 configure 脚本的 -prefix 参数来更改。我们将库安装到 /usr/local/qt5/ 目录中。请注意,这里的安装一词有两个含义。它是一个由所有三个步骤组成的完整过程。它也意味着“将文件移动到特定目录”,这是最后一个,第三步。
This is the Open Source Edition. You are licensed to use this software under the terms of the Lesser GNU General Public License (LGPL) versions 2.1. You are also licensed to use this software under the terms of the GNU General Public License (GPL) versions 3. Type '3' to view the GNU General Public License version 3. Type 'L' to view the Lesser GNU General Public License version 2.1. Type 'yes' to accept this license offer. Type 'no' to decline this license offer. Do you accept the terms of either license? yes
确认许可协议。
Running configuration tests... The test for linking against libxcb and support libraries failed! You might need to install dependency packages, or pass -qt-xcb.
如果脚本因上述消息而失败,我们需要安装一些额外的 xcb 库,或者使用 -qt-xcb 选项再次运行脚本。
$ ./configure -prefix /usr/local/qt5 -qt-xcb
使用 -qt-xcb 选项,一些库被构建而不是链接到系统库。
...
Qt modules and options:
Qt D-Bus ............... yes (loading dbus-1 at runtime)
Qt Concurrent .......... yes
Qt GUI ................. yes
Qt Widgets ............. yes
Large File ............. yes
QML debugging .......... yes
Use system proxies ..... no
...
SQL drivers:
DB2 .................. no
InterBase ............ no
MySQL ................ yes (plugin)
OCI .................. no
ODBC ................. no
PostgreSQL ........... yes (plugin)
SQLite 2 ............. no
SQLite ............... yes (plugin, using bundled copy)
TDS .................. no
tslib .................. no
udev ................... yes
xkbcommon-x11........... yes (bundled copy, XKB config root: /usr/share/X11/xkb)
xkbcommon-evdev......... yes
zlib ................... yes (system library)
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/qt5
Prior to reconfiguration, make sure you remove any leftovers from
the previous build.
这是 configure 脚本的部分输出。输出告诉我们准备构建哪些组件。例如,将创建用于 MySQL 和 PostgreSQL 的 SQL 驱动程序,但不会创建用于 DB2 或 InterBase 的驱动程序。
$ make
我们使用 make 命令启动构建过程。Qt 工具包的构建可能需要几个小时;这取决于您的处理器的性能。
最后一步是安装,或者将文件移动到目录。
$ sudo make install
此命令完成安装过程。该库现在已安装在 /usr/local/qt5/ 目录中。
我们要做的最后一件事是将 Qt5 路径添加到 PATH 系统变量中。bash 用户需要编辑 .profile 文件或 .bashrc 文件。
$ PATH=/usr/local/qt5/bin:$PATH $ export PATH
我们已将 Qt5 库的 bin 目录的路径添加到 PATH 环境变量中。更改将在另一次登录后生效。
从软件包安装
从软件包安装 Qt 更容易。Linux 软件包通常不包含最新的 Qt 版本。
$ sudo apt-get install qt5-default
以上命令在基于 Debian 的 Linux 上安装 Qt5。
Qt5 版本示例
我们的第一个程序打印 Qt5 库的版本。
#include <QtCore>
#include <iostream>
int main() {
std::cout << "Qt version: " << qVersion() << std::endl;
}
qVersion 函数在运行时将 Qt 的版本号作为字符串返回。
$ g++ -o version version.cpp -I/usr/include/x86_64-linux-gnu/qt5/QtCore \
-I/usr/include/x86_64-linux-gnu/qt5 -L/usr/lib/qt5 -lQt5Core -fPIC
以上命令编译该示例。请注意,您的 Qt5 库可能安装在不同的位置。
$ ./version Qt version: 5.14.2
本教程中使用的 Qt5 库的版本是 5.14.2。
测试一个小型的 GUI 示例
最后,我们编写一个小型应用程序。该应用程序由一个普通窗口组成。
#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
window.resize(250, 150);
window.setWindowTitle("Simple example");
window.show();
return app.exec();
}
要构建此示例,我们使用 qmake 工具。
$ qmake -project
此命令创建一个项目文件,该文件具有 .pro 扩展名。
###################################################################### # Automatically generated by qmake (3.1) Mon Nov 30 13:42:14 2020 ###################################################################### TEMPLATE = app TARGET = simple INCLUDEPATH += . # Input SOURCES += simple.cpp QT += widgets
Qt Widgets 模块默认不包含在项目中。因此,我们在文件末尾添加该模块。
$ qmake $ make
我们使用上述命令构建程序。qmake 创建一个 Makefile,make 命令构建程序。
如果 Qt5 安装目录不是 PATH 变量的一部分,我们可以提供 qmake 工具的完整路径。
$ /usr/local/qt5/bin/qmake -project $ /usr/local/qt5/bin/qmake $ make
本章介绍了 Qt5 库。