Qt6 qml CMake 添加资源文件

问题来源:给Button添加图标或者给Rectangle添加图片失败

给Button添加图标或者给Rectangle添加图片时总是报错:QML Image: Cannot open: qrc:/config.png

使用Qt5 没有任何问题,所以应该是资源文件导入失败。

解决办法

资源文件的处理rcc通常是在构建应用程序时完成的。

如果CMAKE_AUTORCC启用,只需将.qrc文件作为源添加到可执行文件或库中。然后引用的资源文件将嵌入到二进制文件中:

set(CMAKE_AUTORCC ON)

qt_add_executable(my_app
    application.qrc
    main.cpp
)

AUTORCC 的替代方案是使用 Qt6Core 的 CMake 函数qt_add_resources,这可以更好地控制资源的创建。例如,它允许直接在项目文件中指定资源的内容,而无需.qrc先编写文件:

qt_add_resources(my_app "app_images"
    PREFIX "/"
    FILES
        images/copy.png
        images/cut.png
        images/new.png
        images/open.png
        images/paste.png
        images/save.png
)

最后,qt_add_qml_module允许将 Qt Quick 资源嵌入到应用程序的资源系统中。Qml该函数在 CMake 包的组件中定义Qt6

source:https://doc.qt.io/qt-6/resources.html#build-system-integration

如果你想在 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、付费专栏及课程。

余额充值