Linux 下 Qt 开发环境的搭建

步骤如下:

  1. 安装 Qt6 库和开发工具包。

    在 Arch Linux 上,可以使用 AUR 包管理器安装 Qt6。打开终端并运行以下命令:

    yay -S qt6-base qt6-tools qt6-svg qt6-multimedia qt6-webengine

    安装的分别是:Qt6 基本库、工具包、SVG 模块、多媒体模块和 WebEngine 模块。

  2. 创建 CMake 项目。

    创建空目录作为项目目录,创建 CMakeLists.txt

     1    cmake_minimum_required(VERSION 3.16)
     2    project(my_qt_app)
     3
     4    set(CMAKE_AUTOMOC ON)
     5    set(CMAKE_AUTORCC ON)
     6    set(CMAKE_AUTOUIC ON)
     7    set(CMAKE_CXX_STANDARD 17)
     8    set(CMAKE_CXX_STANDARD_REQUIRED ON)
     9
    10    find_package(Qt6 COMPONENTS Widgets REQUIRED)
    11
    12    add_executable(my_qt_app main.cpp)
    13
    14    target_link_libraries(my_qt_app Qt6::Widgets)
    

    上面的代码创建一个名为 my_qt_app 的项目,并告诉 CMake 使用 Qt6 Widgets 组件。

    详细解释如下:

    1. cmake_minimum_required(VERSION 3.16)

      这个命令指定 CMake 的最低版本要求。在这个例子中,我使用的是 CMake 3.16 版本。

    2. project(my_qt_app)

      这个命令指定了项目的名称。在这个例子中,我把项目命名为 my_qt_app

    3. set(CMAKE_AUTOMOC ON), set(CMAKE_AUTORCC ON), set(CMAKE_AUTOUIC ON)

      这三个命令分别启用了自动 MOC、自动 RCC 和自动 UIC 功能。

      • MOC 元对象编译器,用于处理信号和槽等元对象相关的代码。

      • RCC 资源编译器,用于将资源文件编译成 C++ 代码

      • UIC 用户界面编译器,用于将 Qt Designer 的 .ui 文件编译成 C++ 代码。启用这些功能可以简化 Qt 项目的构建过程。

    4. set(CMAKE_CXX_STANDARD 17), set(CMAKE_CXX_STANDARD_REQUIRED ON)

      这两个命令指定了 C++ 标准的版本。在这个例子中,我使用的是 C++17 标准。set(CMAKE_CXX_STANDARD_REQUIRED ON) 命令指定必须使用 C++17 标准,如果不支持将构建失败。

    5. find_package(Qt6 COMPONENTS Widgets REQUIRED)

      这个命令告诉 CMake 查找 Qt6 Widgets 组件,并将其链接到项目中。REQUIRED 参数指定必须找到该组件,否则构建将失败。

    6. add_executable(my_qt_app main.cpp)

      这个命令将 main.cpp 文件编译成可执行文件 my_qt_app

    7. target_link_libraries(my_qt_app Qt6::Widgets)

      这个命令将 Qt6 Widgets 库链接到 my_qt_app 可执行文件中。

  3. 编写代码

    创建 main.cpp 文件:

     1    #include <QApplication>
     2    #include <QLabel>
     3
     4    int main(int argc, char *argv[])
     5    {
     6        QApplication app(argc, argv);
     7
     8        QLabel label("Hello, World!");
     9        label.show();
    10
    11        return app.exec();
    12    }
    

    上面的代码在窗口中显示“Hello, World!”。

  4. 构建和运行应用程序。

    构建

    1`cmake -B build`
    2`cmake --build build`
    

    运行

    1./my_qt_app
    

    上面的代码打开一个窗口,显示“Hello, World!”。