我想使用Rectangle
元素在Qt 5.2.1(msvc2012)中创建一个Qt快速应用程序项目。
这是我的main.qml
:
import QtQuick 2.0
Rectangle {
width: 100
height: 100
color: "red"
}
当我运行这个项目时,构建永远不会完成,我看不到任何应用程序窗口。 应用程序输出保持在:
启用QML调试。只能在安全的环境中使用它。
这是我的main.cpp
:
#include <QApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
return app.exec();
}
这是我的专业档案:
TEMPLATE = app
QT += qml quick widgets
SOURCES += main.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Default rules for deployment.
include(deployment.pri)
这是我的deployment.pri:
android-no-sdk {
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:unix {
isEmpty(target.path) {
qnx {
target.path = /tmp/$${TARGET}/bin
} else {
target.path = /opt/$${TARGET}/bin
}
export(target.path)
}
INSTALLS += target
}
export(INSTALLS)
这是编译输出:
22:21:25:为项目521msvc20123 ... 22:21:25运行步骤: 配置不变,跳过qmake步骤。 22:21:25:开始: “C:\ qtcreator-3.1.0 \ bin \ jom.exe”C:\ qtcreator-3.1.0 \ bin \ jom.exe -f Makefile.Debug C:\ QtDva \ 5.2.1 \ msvc2012 \ bin \ rcc.exe -name qml .. \ 521msvc20123 \ qml.qrc -o debug \ qrc_qml.cpp cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\521msvc20123.pdb -DUNICODE -DWIN32 -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_QUICK_LIB -DQT_QML_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -I“........ \ QtDva \ 5.2.1 \ msvc2012 \ include”-I“....... 。\ QtDva \ 5.2.1 \ msvc2012 \ include \ QtQuick“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtQml“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtWidgets“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtNetwork“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtGui“-I”........ \ QtDva \ 5.2.1 \ msvc2012 \ include \ QtANGLE“-I”........ \ QtDva \ 5.2。 1 \ msvc2012 \ include \ QtCore“-I”debug“-I”。“ -I“........ \ QtDva \ 5.2.1 \ msvc2012 \ mkspecs \ win32-msvc2012”-Fodebug \ @C:\ Users \ Vladimir \ AppData \ Local \ Temp \ qrc_qml.obj.7128.454.jom qrc_qml.cpp echo 1 / * CREATEPROCESS_MANIFEST_RESOURCE_ID / 24 / RT_MANIFEST / “调试\ 521msvc20123.exe.embed.manifest” &GT;调试\ 521msvc20123.exe_manifest.rc 如果不存在debug \ 521msvc20123.exe(如果存在) debug \ 521msvc20123.exe.embed.manifest del debug \ 521msvc20123.exe.embed.manifest(如果存在) debug \ 521msvc20123.exe.embed.manifest copy / Y. 调试\ 521msvc20123.exe.embed.manifest 调试\ 521msvc20123.exe_manifest.bak 已复制1个文件。 link / NOLOGO / DYNAMICBASE / NXCOMPAT / DEBUG / SUBSYSTEM:WINDOWS“/ MANIFESTDEPENDENCY:type ='win32' name ='Microsoft.Windows.Common-Controls'version ='6.0.0.0' publicKeyToken ='6595b64144ccf1df'language ='' processorArchitecture =''“/ MANIFEST /MANIFESTFILE:debug\521msvc20123.exe.embed.manifest /OUT:debug\521msvc20123.exe @C:\用户\弗拉基米尔\应用程序数据\本地的\ Temp \ 521msvc20123.exe.7128.2875.jom 如果存在debug \ 521msvc20123.exe_manifest.bak fc / b 调试\ 521msvc20123.exe.embed.manifest debug \ 521msvc20123.exe_manifest.bak&gt; NUL ||德尔 debug \ 521msvc20123.exe_manifest.bak如果不存在 debug \ 521msvc20123.exe_manifest.bak rc.exe /fodebug\521msvc20123.exe_manifest.res debug \ 521msvc20123.exe_manifest.rc如果不存在 debug \ 521msvc20123.exe_manifest.bak link / NOLOGO / DYNAMICBASE / NXCOMPAT / DEBUG / SUBSYSTEM:WINDOWS“/ MANIFESTDEPENDENCY:type ='win32' name ='Microsoft.Windows.Common-Controls'version ='6.0.0.0' publicKeyToken ='6595b64144ccf1df'language ='' processorArchitecture ='*'“/ MANIFEST /MANIFESTFILE:debug\521msvc20123.exe.embed.manifest /OUT:debug\521msvc20123.exe @C:\用户\弗拉基米尔\应用程序数据\本地的\ Temp \ 521msvc20123.exe.7128.2891.jom 如果存在debug \ 521msvc20123.exe_manifest.bak del debug \ 521msvc20123.exe_manifest.bak 22:21:32:这个过程 “C:\ qtcreator-3.1.0 \ bin \ jom.exe”正常退出。 22:21:32:经过 时间:00:08。
可能是什么问题?
Qt QQmlApplicationEngine refuse to display qml code 不是关于Rectangle元素,它关于ApplicationWindow元素中缺少的可见属性。
答案 0 :(得分:12)
与QQuickView不同, QQmlApplicationEngine不会自动创建 根窗口。如果你使用的是Qt Quick的视觉项目,你会的 需要将它们放在窗口内。
因此,您需要将Rectangle
放入Window
。
import QtQuick 2.0
import QtQuick.Window 2.2
Window {
visible: true
Rectangle {
width: 100
height: 100
color: "red"
}
}
当然,您也可以使用QQuickView
代替QQmlApplicationEngine
。在这种情况下,代码应该是以下代码:
<强>的main.cpp 强>
#include <QGuiApplication>
#include <QQuickView>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView engine(QUrl(QStringLiteral("qrc:/main.qml")));
engine.show();
return app.exec();
}
<强> main.qml 强>
import QtQuick 2.0
Rectangle {
width: 100
height: 100
color: "red"
}