文章目录

  • 摘要
  • 国内镜像源下载安装qt6.5
  • 工程文件准备
  • vscode开发环境
  • clion开发环境
  • 写在后面


摘要

自qt6开始官方已不再提供离线安装包,只提供在线选择组件方式安装,默认的下载服务器是国外的,使用国内镜像源可以加速下载。自qt6开始构建配置生成器源生支持cmake,当然qmake也能使用。vscode是程序员界的使用率top1的编辑器,使用vscode配合插件和cmake脚本也能写qt项目,qt官方的IDEQt Cearter也是可以用的,看自己的选择。还有一个Jetbrains公司的Clion(世界上最好的c/c++开发IDE),在智能提示、跳转、重构、插入头文件遥遥领先,本文主要内容是使用国内镜像源安装qt6.5并使用vscode搭建一个qt的demo程序

关键字: qt6.5、vscode、cmake、clion


国内镜像源下载安装qt6.5

qt安装包镜像源 qt国内镜像_QT

  • 在命令行中输入
.\qt-unified-windows-x64-online.exe  --mirror https://mirror.nju.edu.cn/qt

qt安装包镜像源 qt国内镜像_qt安装包镜像源_02


qt安装包镜像源 qt国内镜像_QT_03

  • 输入账号密码,点击下一步
  • 接受开源许可,点击下一步
  • 选择不发送,点击下一步
  • 选择安装路径
  • 组件选择
  • 勾选已经阅读许可协议,点击下一步
  • 速度还是挺快的,基本能达到最大宽带速率
  • 安装完成后将以下路径添加到环境变量PATH中,方便后续新建工程运行程序不用拷贝动态库到构建输出的文件夹下,在程序的当前路径查找不到动态库时程序会直接在环境变量PATH中路径中寻找动态库,开发完成只用windeployqt工具直接发布程序就行了

工程文件准备

  • 准备以下源文件
    main.cpp
#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"

//注意此头文件名字是ui文件的名字加上 "ui_" 前缀形成的,必须这样包含文件否则无法自动调用uic生成头文件
#include "ui_mainwindow.h"	

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
  • UI文件可以使用designer.exe生成,直接双击运行程序(为了方便可以固定到任务栏)

    点击创建之后再按快捷键crtl+ s,保存文件。或者使用菜单栏中文件选项卡中的保存功能,弹出保存对话框选择保存目录并重名文件为mainwindow.ui


    mainwindow.ui文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget"/>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

cmake脚本文件CMakeLists.txt,此脚本兼容qt5和qt6

cmake_minimum_required(VERSION 3.22)
project(demo
        VERSION 0.0.0.1
        DESCRIPTION "is a demo"
        LANGUAGES C CXX
)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# qt库安装目录,根据自己的安装目录修改
set(CMAKE_PREFIX_PATH "C:\\Programs\\Qt6.5.3\\6.5.3\\msvc2019_64")

find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)

# 查询库,其他库自行添加,库名字和使用qmake不同,在qt的帮助手册能查到,同使用qmake时查询方式相同
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS
        Core
        Gui
        Widgets
        REQUIRED
        )

# msvc源文件设置utf-8编码,否则源文件含有中文编译出错,使用mingw版本编译器也不用删除这行,生成器表达式会自动判断编译器类型
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")

#头文件递归搜索宏,方便从顶层文件夹搜索头文件并自动为编译器添加头文件搜索路径
macro(header_directories parent)
    file(GLOB_RECURSE newList ${parent}/*.h)
    set(dir_list "")
    foreach (file_path ${newList})
        get_filename_component(dir_path ${file_path} DIRECTORY)
        set(dir_list ${dir_list} ${dir_path})
    endforeach ()
    list(REMOVE_DUPLICATES dir_list)

    include_directories(${dir_list})
endmacro()

header_directories(src)

#使用正则表达式递归搜索文件
file(GLOB_RECURSE SRC "src/*.c*")
file(GLOB_RECURSE INC "src/*.h*")
file(GLOB_RECURSE UI "src/*.ui")
file(GLOB_RECURSE QRC "src/*.qrc")
file(GLOB_RECURSE RC "src/*.rc")

#添加可执行程序目标
if(CMAKE_BUILD_TYPE MATCHES "Release")
    #发布版除去黑窗口,无qDebu打印
    add_compile_definitions(QT_NO_DEBUG_OUTPUT)
    add_executable(${PROJECT_NAME} WIN32 ${SRC} ${INC} ${UI} ${QRC} ${RC})
else ()
    #调试版保留黑窗口,有qDebug打印
    add_executable(${PROJECT_NAME} ${SRC} ${INC} ${UI} ${QRC} ${RC})
endif()

#为可执行程序目标添加动态链接库
target_link_libraries(${PROJECT_NAME} PUBLIC
        Qt${QT_VERSION_MAJOR}::Core
        Qt${QT_VERSION_MAJOR}::Gui
        Qt${QT_VERSION_MAJOR}::Widgets
        )

vscode开发环境

  • 安装vscode,直接参考以前的博客,在vscode中需要额外安装qt开发的插件,方便编辑ui文件。
  • qt安装包镜像源 qt国内镜像_qt安装包镜像源_04

  • 用vscode打开工程文件夹,注意源文件放在了src文件夹下,CMakeLists.txt放在了最上层,工程编译、执行、debug同一般c++工程相同,不明白的可以看上文提到的博客
  • qt安装包镜像源 qt国内镜像_qt安装包镜像源_05

  • 编辑ui文件,右击ui文件可以使用designer打开文件
  • qt安装包镜像源 qt国内镜像_vscode_06


  • qt安装包镜像源 qt国内镜像_qt_07

clion开发环境

  • clion安装流程可以参考这篇博客只需要看安装部分即可,用clion打开工程文件夹,由于我安装的是msvc版本,工具链选择了Visual Studio,如果是安装的mingw版本的直接使用默认的工具链即可。
  • 如果同样是MSVC版本的但没有Visual Studio工具链,先安装Visual Studio2022,在设置中添加工具链,注意工具集是Visual Studio2022的安装路径,下面的c/c++编译器自动识别,调试器也自动识别,架构选择amd64
  • 将工程使用的工具链设置为Visual Studio,其他方面的使用同开发一般c++程序相同
  • 编辑ui文件,添加一个外部工具
  • 右击文件可以使用外部工具,调用designer打开文件

写在后面

如果本文对你有帮助不要吝啬你的点赞、收藏、评论、关注,也欢迎嗮出你的博客一起进步,对博客不明白的地方可以在评论区交流