set_source_files_properties QT_QML_SINGLETON_TYPE

目录

前言

[QT_QML_SINGLETON_TYPE 属性](#QT_QML_SINGLETON_TYPE 属性)

基本用法

示例

[1. 创建一个基本的 CMake 项目](#1. 创建一个基本的 CMake 项目)

[2. 编辑 CMakeLists.txt](#2. 编辑 CMakeLists.txt)

[3. 创建 main.cpp](#3. 创建 main.cpp)

[4. 创建 MySingleton.qml](#4. 创建 MySingleton.qml)

[5. 创建 qml.qrc](#5. 创建 qml.qrc)

[6. 创建 main.qml](#6. 创建 main.qml)

构建和运行项目

结论


前言

在使用 Qt 和 CMake 构建项目时,有时你可能需要将某些 QML 文件设置为单例类型。Qt 为此提供了一个名为 QT_QML_SINGLETON_TYPE 的属性,可以通过 CMake 的 set_source_files_properties 命令来设置。

QT_QML_SINGLETON_TYPE 属性

当你希望将某个 QML 文件在整个应用程序中作为单例实例使用时,可以将其标记为单例类型。这在大型 QML 项目中尤其有用,因为它简化了状态管理和资源共享。

基本用法

你可以通过以下步骤在 CMake 项目中设置 QT_QML_SINGLETON_TYPE 属性:

  1. 确保你已经导入了 Qt 和 QML 模块
  2. 使用 set_source_files_properties 命令设置 QML 文件的 QT_QML_SINGLETON_TYPE 属性

示例

以下是一个完整的示例,展示如何在 CMake 项目中将 QML 文件设置为单例类型。

1. 创建一个基本的 CMake 项目

首先,创建一个基本的 CMake 项目结构:

复制代码
MyQtApp/
├── CMakeLists.txt
├── main.cpp
├── MySingleton.qml
└── qml.qrc
2. 编辑 CMakeLists.txt

CMakeLists.txt 文件中,添加以下内容:

复制代码
cmake_minimum_required(VERSION 3.14)
project(MyQtApp LANGUAGES CXX)

find_package(Qt6 REQUIRED COMPONENTS Core Quick)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

add_executable(MyQtApp
    main.cpp
    qml.qrc
)

set_source_files_properties(MySingleton.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)

target_link_libraries(MyQtApp
    PRIVATE Qt6::Core Qt6::Quick
)

qt_add_qml_module(MyQtApp
    URI MyApp
    VERSION 1.0
    QML_FILES MySingleton.qml
)
3. 创建 main.cpp

在项目目录中,创建 main.cpp 文件,并添加以下内容:

复制代码
#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}
4. 创建 MySingleton.qml

在项目目录中,创建 MySingleton.qml 文件,并添加以下内容:

复制代码
import QtQuick 2.15

QtObject {
    id: singleton
    property string message: "Hello from Singleton!"
}
5. 创建 qml.qrc

在项目目录中,创建 qml.qrc 文件,并添加以下内容:

复制代码
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
    <file>MySingleton.qml</file>
    <file>main.qml</file>
</qresource>
</RCC>
6. 创建 main.qml

在项目目录中,创建 main.qml 文件,并添加以下内容:

复制代码
import QtQuick 2.15
import QtQuick.Controls 2.15
import MyApp 1.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Text {
        text: MySingleton.message
        anchors.centerIn: parent
    }
}

构建和运行项目

完成上述步骤后,你可以构建并运行你的 Qt 项目,看看 QML 单例的效果。

复制代码
mkdir build
cd build
cmake ..
cmake --build .
./MyQtApp

结论

通过这些步骤,你应该能够在 CMake 项目中使用 set_source_files_properties 命令将 QML 文件设置为单例类型。如果有任何问题或需要进一步的帮助,请随时告诉我!

相关推荐
SAP小崔说事儿1 小时前
在数据库中将字符串拆分成表单(SQL和HANA版本)
java·数据库·sql·sap·hana·字符串拆分·无锡sap
川贝枇杷膏cbppg2 小时前
asmcmd
数据库·oracle
JIngJaneIL3 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
IndulgeCui3 小时前
基于CentOS7 DM8单机部署配置记录-20251216
数据库
surtr13 小时前
关系代数与关系型数据库
数据库·sql·数据库系统
学海_无涯_苦作舟3 小时前
MySQL面试题
数据库·mysql·面试
老邓计算机毕设4 小时前
SSM校内二手书籍交易系统的设计与实现an1k0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·ssm 框架开发·ssm 校内二手书籍交易系统
天行健,君子而铎4 小时前
高性能、可控、多架构:教育行业数据库风险监测一体化解决方案
数据库·架构
Stella25214 小时前
实习日志|知识总结
linux·服务器·软件测试·数据库