gpt4 book ai didi

c++ - 使用 cmake 复制所有 qt 资源

转载 作者:行者123 更新时间:2023-11-30 01:46:11 27 4
gpt4 key购买 nike

我想使用 cmake 编译 qml 应用程序。这是我的 cmake 文件:

cmake_minimum_required(VERSION 3.3)
project(QMLTest)
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)

find_package(Qt5Widgets REQUIRED)
find_package(Qt5Quick REQUIRED)

add_executable(QMLTest main.cpp)
include_directories(${Qt5Widgets_INCLUDES})
add_definitions(${Qt5Widgets_DEFINITIONS})
qt5_use_modules(QMLTest Widgets Quick )

和 main.cpp:

#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char** argv)
{
QGuiApplication app(argc, argv);
QQuickView view;
view.resize(800, 480);
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl::fromLocalFile("gui/MainWidnow.qml"));
view.show();
return app.exec();
}

当我尝试编译它时出现错误:

gui/MainWidnow.qml: File not found.

如何将我所有的 qt 资源复制到应用程序目录中?

最佳答案

与其将 QML 文件复制到应用程序目录,我建议使用 Qt 的资源系统 ( 1 ),它允许您将 QML 文件等资源直接嵌入到您的可执行文件中。为此,您需要先创建一个资源文件,例如resources.qrc 来注册您的应用程序资源:

<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
<file>gui/MainWindow.qml</file>
</qresource>
</RCC>

然后您将资源文件添加到您的 CMake 配置中。这将从您需要包含在应用程序源中的资源文件创建一个源文件:

qt5_add_resources(RCC_SOURCES resources.qrc)
add_executable(QMLTest ${RCC_SOURCES} main.cpp)

完成此操作后,您可以使用格式为 :/gui/MainWindow.qml 的文件 URL 来引用此资源,该资源现已嵌入到您的应用程序二进制文件中。 Qt 会自动为你解决:

view.setSource(QUrl(":/gui/MainWindow.qml"));

Qt 文档中有一些关于部署 QML 应用程序的更多详细信息 (2)。

关于c++ - 使用 cmake 复制所有 qt 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33593808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com