我尝试了一个简单的Qt Qml示例,我无法构建它。我已经在谷歌上搜索了十几个类似的问题,但没有一个建议对我有帮助。我的代码是这样的:
main.cpp
#include <QtGui/QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char* argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine(QUrl("qrc:main.qml"));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
main.qml
import QtQuick 2.15
import QtQuick.Controls 2.15
ApplicationWindow
{
visible: true
width: 640
height: 480
title: qsTr("Minimal Qml")
}
qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>
和我的CMakeLists.txt
find_package(Qt5 COMPONENTS Widgets Qml Quick REQUIRED)
qt5_add_resources(QT_RESOURCES qml.qrc)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(PROJECT "qmltest")
project(${PROJECT})
add_executable(${PROJECT} main.cpp ${QT_RESOURCES})
target_link_libraries(${PROJECT}
Qt5::WinMain
Qt5::Core
Qt5::Qml
Qt5::Quick
)
我使用windeployqt将所有库放到正确的位置。该程序在我的Windows机器上启动,但控制台输出以:
结束QQmlApplicationEngine failed to load component
qrc:main.qml:2:1: module "QtQuick.Controls" is not installed
qrc:main.qml:1:1: module "QtQuick" is not installed
qrc:main.qml:2:1: module "QtQuick.Controls" is not installed
qrc:main.qml:1:1: module "QtQuick" is not installed
应用部署后的路径:
<DIR> bearer
qgenericbearerd.dll
<DIR> iconengines
qsvgicond.dll
<DIR> imageformats
qgifd.dll
qicnsd.dll
qicod.dll
qjpegd.dll
qsvgd.dll
qtgad.dll
qtiffd.dll
qwbmpd.dll
qwebpd.dll
<DIR> platforminputcontexts
qtvirtualkeyboardplugind.dll
<DIR> platforms
qwindowsd.dll
<DIR> qmltooling
qmldbg_debuggerd.dll
qmldbg_inspectord.dll
qmldbg_locald.dll
qmldbg_messagesd.dll
qmldbg_natived.dll
qmldbg_nativedebuggerd.dll
qmldbg_previewd.dll
qmldbg_profilerd.dll
qmldbg_quickprofilerd.dll
qmldbg_serverd.dll
qmldbg_tcpd.dll
<DIR> scenegraph
qsgd3d12backendd.dll
<DIR> styles
qwindowsvistastyled.dll
<DIR> translations
...
<DIR> virtualkeyboard
qtvirtualkeyboard_hanguld.dll
qtvirtualkeyboard_openwnnd.dll
qtvirtualkeyboard_pinyind.dll
qtvirtualkeyboard_tcimed.dll
qtvirtualkeyboard_thaid.dll
concrt140d.dll
d3dcompiler_47.dll
libEGLd.dll
libGLESv2d.dll
msvcp140d.dll
msvcp140d_atomic_wait.dll
msvcp140d_codecvt_ids.dll
msvcp140_1d.dll
msvcp140_2d.dll
qmltest.exe
qmltest.ilk
qmltest.pdb
Qt5Cored.dll
Qt5Guid.dll
Qt5Networkd.dll
Qt5Qmld.dll
Qt5Quickd.dll
Qt5Svgd.dll
Qt5Widgetsd.dll
vccorlib140d.dll
vcruntime140d.dll
我使用Qt 5.15开源。我将其构建并安装在WIndows7上。什么好主意吗?谢谢你!
对于我们的一个Windows应用,我们部署了超过1700个文件。目录结构大致如下:
<DIR> MyQtApp_Bin_Dir
MyQtApp.exe
COPY C:QtQt5.15.65.15.6msvc2019_64bin*.dll
COPY C:QtQt5.15.65.15.6msvc2019_64resources*.*
COPY C:QtQt5.15.65.15.6msvc2019_64plugins*
COPY VISUALSTUDIO_REDISTRIBUTABLES_HERE
<DIR> MyQtApp_Bin_Dirqml
COPY C:QtQt5.15.65.15.6msvc2019_64qml*
在您发布的目录转储中,似乎没有qml
文件夹。内容直接控制有问题的import
语句。