【QT】Windows环境下,cmake引入QT/QML

这里使用的QT库为5.7版本。


目录

一、添加环境变量

1、QT 库环境变量

2、QML环境变量

二、引入QML

1、qrc 文件配置

2、cmake 配置

(1) cmake引入QT库

(2) 添加 qrc 资源文件

(3) 目标文件链接到 QT库

3、测试用例

三、引入QT

1、cmake配置

2、测试用例


一、添加环境变量

1、QT 库环境变量

QT库根目录环境变量 QTDIR

QT库平台插件环境变量 QT_PLUGIN_PATH

QT库动态库环境变量,bin目录下包含了QT程序运行所需的dll文件,添加到环境变量 Path

2、QML环境变量

除了上述环境变量外,QML还需要额外添加环境支持

 QML支持环境变量 QML2_IMPORT_PATH (该环境变量仅在需要使用QML时添加)

二、引入QML

1、qrc 文件配置

新建一个 .qrc 文件,这里命名为 qml.qrc,.qrc是一个Qt资源文件,用于将QML文件、图片等资源打包到一个二进制文件中。

<RCC>
    <!-- prefix 定义了资源的访问路径 -->
    <qresource prefix="/">
        <file>qml/main.qml</file>        <!-- main.qml 文件在qml目录下 -->
        <file>image.png</file>           <!-- image.png在 .qrc 文件同级目录下 -->
    </qresource>
</RCC>

后续访问 main.qml 文件的路径格式为:

qrc:<prefix><file>

qrc:/qml/main.qml

2、cmake 配置

(1) cmake引入QT库

find_package(Qt5 COMPONENTS REQUIRED
    Gui
    Quick
    Qml
    Core
    Widgets
)
if(Qt5_FOUND)
    message(STATUS "Qt5 is found")
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    set(CMAKE_AUTOUIC ON)       # 自动编译 .ui 文件
    set(CMAKE_AUTORCC ON)       # 自动编译 .qrc 文件
    set(CMAKE_AUTOMOC ON)       # 自动编译包含宏 Q_OBJECT 的文件
endif()

(2) 添加 qrc 资源文件

file(GLOB ALL_SOURCES *.c *.cpp)
file(GLOB ALL_INCLUDES *.h *.hpp)
set(ALL_SRCS 
    ${ALL_SOURCES} 
    ${ALL_INCLUDES}
    qml.qrc         # qml.qrc是一个Qt资源文件,用于将QML文件、图片等资源打包到一个二进制文件中
)   

add_executable(${PROJECT_NAME} ${ALL_SRCS})

(3) 目标文件链接到 QT库

target_link_libraries(${PROJECT_NAME}
    Qt5::Gui
    Qt5::Quick
    Qt5::Qml
    Qt5::Core
    Qt5::Widgets
)

3、测试用例

#include <QtWidgets/QApplication>
#include <QtQml/QQmlApplicationEngine>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
	QQmlApplicationEngine engine;

	// 显示QML文件
	engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));	// qrc: + <prefix> + <file>
	if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

三、引入QT

1、cmake配置

QT 引入的步骤可以参考 QML,QT引入不需要 qrc 文件

cmake_minimum_required(VERSION 3.15.0)
project(QTTest)

set(QT_ROOT_PATH "C:/Users/GZX/Desktop/qt5_7_lib_shared_64")
# 添加库的检索路径
list(APPEND CMAKE_PREFIX_PATH ${QT_ROOT_PATH})
find_package(Qt5 COMPONENTS
    Gui
    Core
    Widgets
)
# 添加头文件路径
include_directories(${QT_ROOT_PATH}/include)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)       # 自动编译.ui文件
set(CMAKE_AUTORCC ON)       # 自动编译.qrc文件
set(CMAKE_AUTOMOC ON)       # 自动编译包含宏Q_OBJECT的文件

add_executable(${PROJECT_NAME} qtTest.cpp)
target_link_libraries(${PROJECT_NAME}
    Qt5::Core
    Qt5::Widgets
    Qt5::Gui
)

2、测试用例

#include <QtWidgets/QLabel>
#include <QtWidgets/QApplication>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
 	QLabel *label = new QLabel("Hello Qt!");
 	label->show();
	app.exec();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值