[Interest] Qml MessageDialog not centered over window

Murphy, Sean smurphy at walbro.com
Mon Sep 25 14:57:25 CEST 2017


> Aha, it happens when using a QApplication; the MessageDialog is actually a
> QMessageBox in that case.  I can get the same result with the test qml like
> this:
> 
> qml -apptype widget messagedialog.qml
> 
> (that makes the qml runtime use a QApplication instead of QGuiApplication)
> and maybe we have some trouble making a QWidget dialog transient for a
> QWindow.  In  QMessageBoxHelper::show(), it does try to set its transient
> parent:
> 
>      virtual bool show(Qt::WindowFlags f, Qt::WindowModality m, QWindow
> *parent) {
>         m_dialog.winId();
>         QWindow *window = m_dialog.windowHandle();
>         Q_ASSERT(window);
>         window->setTransientParent(parent);
>  qDebug() << window << "transient for" << parent;
>     … }
> 
> QMessageBoxHelper::show - QWidgetWindow(0x7fcf52d80a40,
> name="QMessageBoxClassWindow") transient for
> QQuickWindowQmlImpl(0x7fcf54a192c0)
> 
> I wrote it up as QTBUG-63406.

Ok. I still need to figure out what I'm doing wrong in my application that I'm 
not able to use a QGuiApplication without getting that assert for some reason.
I really would like it to be a MessageDialog, not a QMessageBox, but as I've got
things right now, I can't seem to get QGuiApplication to work.

My application is pretty lightweight, and it is based off from the Qt Quick Extras -
Dashboard in the examples folder. That example runs just fine using QGuiApplication,
so I don't get what I've done to it that makes it assert now. I guess I need to start 
from the working example and begin adding in chunks of my actual application until
I find out what the problems is.

Sean



More information about the Interest mailing list