QPA/Windows example: Set proper window flags, titles, names.
authorFriedemann Kleint <Friedemann.Kleint@digia.com>
Fri, 28 Sep 2012 15:14:44 +0000 (17:14 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 1 Oct 2012 08:20:09 +0000 (10:20 +0200)
Do not leak windows.

Change-Id: I3af29ce597742cbe6444208aa72443c0507819db
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
examples/qpa/windows/main.cpp
examples/qpa/windows/window.cpp

index 2e03d1d..da189ab 100644 (file)
 #include <QGuiApplication>
 #include <QScreen>
 #include <QRect>
+#include <QSharedPointer>
 
 #include "window.h"
 
 int main(int argc, char **argv)
 {
+    typedef QSharedPointer<QWindow> WindowPtr;
+
     QGuiApplication app(argc, argv);
 
     Window a;
+    a.setFramePos(QPoint(10, 10));
+    a.setWindowTitle(QStringLiteral("Window A"));
+    a.setObjectName(a.windowTitle());
     a.setVisible(true);
 
     Window b;
+    b.setFramePos(QPoint(100, 100));
+    b.setWindowTitle(QStringLiteral("Window B"));
+    b.setObjectName(b.windowTitle());
     b.setVisible(true);
 
     Window child(&b);
+    child.setObjectName(QStringLiteral("ChildOfB"));
     child.setVisible(true);
 
     // create one window on each additional screen as well
 
     QList<QScreen *> screens = app.screens();
+    QList<WindowPtr> windows;
     foreach (QScreen *screen, screens) {
         if (screen == app.primaryScreen())
             continue;
-        Window *window = new Window(screen);
+        WindowPtr window(new Window(screen));
         QRect geometry = window->geometry();
         geometry.moveCenter(screen->availableGeometry().center());
         window->setGeometry(geometry);
         window->setVisible(true);
         window->setWindowTitle(screen->name());
+        window->setObjectName(window->windowTitle());
+        windows.push_back(window);
     }
-
     return app.exec();
 }
index 664f74b..a9f2927 100644 (file)
@@ -73,10 +73,13 @@ void Window::initialize()
     if (parent())
         setGeometry(QRect(160, 120, 320, 240));
     else {
-        setGeometry(QRect(10, 10, 640, 480));
+        setWindowFlags(windowFlags() | Qt::WindowTitleHint | Qt::WindowSystemMenuHint
+                       | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
+        const QSize baseSize = QSize(640, 480);
+        setGeometry(QRect(geometry().topLeft(), baseSize));
 
         setSizeIncrement(QSize(10, 10));
-        setBaseSize(QSize(640, 480));
+        setBaseSize(baseSize);
         setMinimumSize(QSize(240, 160));
         setMaximumSize(QSize(800, 600));
     }