【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
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在 Qt QML 中使用 C++ 类,可以通过 CMake 添加一个 C++ 类,并将其与 QML 集成。 以下是添加 C++ 类的步骤: 1. 在项目中创建一个新的 C++ 类,例如 `MyClass`,并将其添加到 `src` 目录下。 2. 在 CMakeLists.txt 文件中添加以下代码: ``` # 添加 C++ 类 add_library(MyClass SHARED src/myclass.cpp src/myclass.h ) # 链接 Qt 模块 target_link_libraries(MyClass PRIVATE Qt6::Core Qt6::Qml) # 安装库文件 install(TARGETS MyClass LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) # 安装头文件 install(FILES src/myclass.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/myproject ) ``` 这个命令会将 `MyClass` 添加到项目中,并将其链接到 Qt6 的核心库和 QML 库中。 3. 在 `main.qml` 文件中添加以下代码: ``` import myproject 1.0 // 创建 C++ 类实例 MyClass { id: myclass } // 使用 C++ 类的属性和方法 Text { text: myclass.text } ``` 这个命令会将 `MyClass` 导入到 QML 中,并创建一个 C++ 类实例。你可以像使用其他 QML 类一样使用这个实例的属性和方法。 注意,为了使 C++ 类能够在 QML 中使用,你需要在类的头文件中使用 `Q_OBJECT` 宏,并在 C++ 类中添加 QML 属性和方法。例如: ``` #ifndef MYCLASS_H #define MYCLASS_H #include <QObject> class MyClass : public QObject { Q_OBJECT Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) public: explicit MyClass(QObject *parent = nullptr); QString text() const; void setText(const QString &text); signals: void textChanged(); private: QString m_text; }; #endif // MYCLASS_H ``` 这个类中添加了一个 `text` 属性和相应的读写方法,并使用 `Q_PROPERTY` 宏将其导出到 QML 中。在实现文件中,需要为这个类的方法添加相应的实现代码。 以上就是在 Qt QML 中添加 C++ 类的步骤,希望对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值