我想使用Rectangleelement 在Qt 5.2.1(msvc2012)中创建一个Qt Quick Application项目.这是我的main.qml:
import QtQuick 2.0
Rectangle {
width: 100
height: 100
color: "red"
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个项目时,构建永远不会完成,我没有看到任何应用程序窗口.应用程序输出保持在:
启用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();
}
Run Code Online (Sandbox Code Playgroud)
这是我的专业档案:
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)
Run Code Online (Sandbox Code Playgroud)
这是我的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)
Run Code Online (Sandbox Code Playgroud)
这是编译输出:
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"...../ 24 / RT_MANIFEST /"debug\521msvc20123.exe.embed.manifest"> debug\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 debug\521msvc20123.exe.embed.manifest debug\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:\ Users\Vladimir\AppData\Local\Temp\521msvc20123.exe.7128.2875.jom如果存在debug\521msvc20123 .exe_manifest.bak fc/b debug\521msvc20123.exe.embed.manifest debug\521msvc20123.exe_manifest.bak> NUL || del 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:\ Users\Vladimir\AppData\Local\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拒绝显示qml代码 不是关于Rectangle元素,它关于ApplicationWindow元素中缺少的可见属性.
Tar*_*rod 13
根据文件,
与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"
}
}
Run Code Online (Sandbox Code Playgroud)
当然,您也可以使用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();
}
Run Code Online (Sandbox Code Playgroud)
main.qml
import QtQuick 2.0
Rectangle {
width: 100
height: 100
color: "red"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |