我正在开发一个Qt QML项目,我试图在我的窗口中显示一个简单的图像,但除了一个空窗口之外什么也没有显示。
我将图像放入资源文件中 (
qrc
),并提供了源及其确切路径。
Main.qml
import QtQuick 2.4
import QtQuick.Window 2.4
Window {
width: 400
height: 400
Image {
id: image
x: 0
y: 0
width: 400
height: 400
source: "1.PNG"
fillMode: Image.PreserveAspectFit
}
visible: true
}
图片.qrc
<RCC>
<qresource prefix="/pics">
<file>1.PNG</file>
</qresource>
</RCC>
主.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(u"qrc:/Hello_Word/Main.qml"_qs);
QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,
&app, []() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
如何在我的
1.PNG
中显示 window
?
基于此答案,您必须对您的项目进行以下修改:
CMakeLists.txt
:
cmake_minimum_required(VERSION 3.16)
project(ExplainQML VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
########add this line to compile qrc file to rcc
set(CMAKE_AUTORCC ON)
########
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick)
qt_standard_project_setup()
qt_add_executable(appExplainQML
main.cpp
#########add the resource file to your project
res.qrc
#############
)
qt_add_qml_module(appExplainQML
URI ExplainQML
VERSION 1.0
QML_FILES Main.qml
)
set_target_properties(appExplainQML PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
target_link_libraries(appExplainQML
PRIVATE Qt6::Quick
)
install(TARGETS appExplainQML
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
将
source
中的 main.qml
更改为:
source: "qrc:/pics/1.PNG"
您的
qrc
文件还需要更改为以下内容:
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/pics/">
<file alias="1.PNG">pics/1.PNG</file>
</qresource>
</RCC>
注意:如果您更改正在使用的文件或使用多个文件,请务必相应地修改您的项目,特别是
qrc
文件和main.qml
。