I want to make a Qt Quick Application project in Qt 5.2.1(msvc2012) using Rectangle
element.
Here is my main.qml
:
import QtQuick 2.0
Rectangle {
width: 100
height: 100
color: "red"
}
When I run this project, building is never finished and I don't see any application window. Application output stays at:
QML debugging is enabled. Only use this in a safe environment.
Here is my 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();
}
Here is my pro file:
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)
Here is my 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)
Here is Compile Output:
22:21:25: Running steps for project 521msvc20123... 22:21:25: Configuration unchanged, skipping qmake step. 22:21:25: Starting: "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 / "debug\521msvc20123.exe.embed.manifest">debug\521msvc20123.exe_manifest.rc if not exist debug\521msvc20123.exe if exist debug\521msvc20123.exe.embed.manifest del debug\521msvc20123.exe.embed.manifest if exist debug\521msvc20123.exe.embed.manifest copy /Y debug\521msvc20123.exe.embed.manifest debug\521msvc20123.exe_manifest.bak 1 file(s) copied. 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 if exist debug\521msvc20123.exe_manifest.bak fc /b debug\521msvc20123.exe.embed.manifest debug\521msvc20123.exe_manifest.bak >NUL || del debug\521msvc20123.exe_manifest.bak if not exist debug\521msvc20123.exe_manifest.bak rc.exe /fodebug\521msvc20123.exe_manifest.res debug\521msvc20123.exe_manifest.rc if not exist 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 if exist debug\521msvc20123.exe_manifest.bak del debug\521msvc20123.exe_manifest.bak 22:21:32: The process "C:\qtcreator-3.1.0\bin\jom.exe" exited normally. 22:21:32: Elapsed time: 00:08.
What can be the problem?
Qt QQmlApplicationEngine refuse to display qml code is not about the Rectangle element, its about the missing visible property in ApplicationWindow element.
According to the documentation,
Unlike QQuickView, QQmlApplicationEngine does not automatically create a root window. If you are using visual items from Qt Quick, you will need to place them inside of a Window.
So you need to place your Rectangle
inside a Window
.
import QtQuick 2.0
import QtQuick.Window 2.2
Window {
visible: true
Rectangle {
width: 100
height: 100
color: "red"
}
}
Of course, you can alternatively use QQuickView
instead of QQmlApplicationEngine
. In this case, the code should be the following one:
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"
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With