Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rectangle element is not displayed

Tags:

qt

qml

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.

like image 540
Vladimír Avatar asked Oct 01 '15 20:10

Vladimír


1 Answers

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"
}
like image 107
Tarod Avatar answered Sep 28 '22 18:09

Tarod