[Interest] QML ApplicationWindow fails to open a window

Juan Navarro oneorjuan at gmail.com
Mon May 26 16:06:23 CEST 2014


Sorry I forgot to indicate that I'm using latest Qt release, installed
from the official Qt 5.3 online installer, using Ubuntu 14.04.

On Mon, May 26, 2014 at 4:04 PM, Juan Navarro <oneorjuan at gmail.com> wrote:
> Hi there;
> i'm struggling with the behavior of ApplicationWindow and I found that
> it only opens a window when used directly from main() but not from a
> custom class. Let's explain with an example:
>
> ----
> main.qml:
>     import QtQuick 2.2
>     import QtQuick.Controls 1.1
>
>     ApplicationWindow {
>         visible: true
>         width: 640
>         height: 480
>
>         Text {
>             text: "Hello World"
>             anchors.centerIn: parent
>         }
>     }
> ----
> main.cpp:
>     #include <QApplication>
>     #include <QGuiApplication>
>     #include <QQmlApplicationEngine>
>     #include <QObject>
>     #include <QWidget>
>     #include <QUrl>
>
>     class MainWindow1
>     {
>     public:
>         MainWindow1()
>         { QQmlApplicationEngine engine("main.qml"); }
>     };
>
>     class MainWindow2 : public QObject
>     {
>     public:
>         MainWindow2(QObject* parent = 0)
>             : QObject(parent)
>         { QQmlApplicationEngine engine("main.qml"); }
>     };
>
>     class MainWindow3 : public QWidget
>     {
>     public:
>         MainWindow3(QWidget* parent = 0, Qt::WindowFlags flags = 0)
>             : QWidget(parent, flags)
>         { QQmlApplicationEngine engine("main.qml"); }
>     };
>
>     int main(int argc, char *argv[])
>     {
>         QApplication app(argc, argv);
>
>     //    MainWindow1 window;
>     //    MainWindow2 window;
>     //    MainWindow3 window;
>         QQmlApplicationEngine engine("main.qml");
>
>         return app.exec();
>     }
> ----
>
> Check the main() function: only with the uncommented code I get to see
> a new Window which shows the "Hello World" text. If we comment that
> and uncomment any of the other 3 options, which use a custom
> "MainWindow" class, then nothing will come out. I derived MainWindow
> from QObject and QWidget in hopes to find some solution, but I
> actually would think that a standalone MainWindow class should suffice
> for this basic usage scenario.
>
> Is it a bug or I am misusing this class?
>
> Also, extracting the inner QQuickWindow and forcing a call to show()
> doesn't work; ie:
>     MainWindow1()
>     {
>         QQmlApplicationEngine engine("main.qml");
>         Q_ASSERT(engine.rootObjects().size() > 0);
>         QQuickWindow* window =
> qobject_cast<QQuickWindow*>(engine.rootObjects().at(0));
>         window->show();
>     }
> doesn't work.



More information about the Interest mailing list