fat
fat

Reputation: 7103

Rectangle as a root element in QML

I use Qt 5.5.0 MSVC 2013, 32bit.
I want to create minimal QtQuick application. When I choose New Project - Qt Quick Application I got project with 2 QML files: main.qml and MainForm.ui.qml. Since I do not need them, I delete second one and paste following to main.qml:

Import QtQuick 2.4

Rectangle{
    id: root
    visible: true
    color: "gray"
    width: 400
    height: 800
}

But when I run project I got nothing. I see application in Task Manager but there is no application window.
Question: Is it possible to create .qml file with Rectangle as a root element?

Upvotes: 7

Views: 2609

Answers (1)

fat
fat

Reputation: 7103

Solution was found at official Qt Forum.

The template for creating Qt Quick Application adds QQmlApplicationEngine to launch the QML. But QQmlApplicationEngine dont work directly with Rectangle or Item as root element but requires any window like Window or ApplicationWindow. So to make it work for Rectangle use QQuickView instead of QQmlApplicationEngine.

I changed content of main.cpp to

#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQuickView *view = new QQuickView;
    view->setSource(QUrl("qrc:/main.qml"));

    view->show();

    return app.exec();
}

and it solved my problem.

Upvotes: 12

Related Questions