Qt 4.8.6 - Parent Window on Linux



  • On Windows if I create 2 windows, with one being the parent of the other the child window becomes a floating window. Namely the child cannot go underneath the parent window. On my Linux box this behavior doesn't seem to work. My code is:

    @
    #include <QApplication>
    #include <QWidget>

    int main(int argc, char **argv)
    {
    QApplication app(argc, argv);

    QWidget widget;
    widget.setWindowTitle("win1");
    widget.show();
    
    QWidget widget2;
    widget2.setWindowTitle("win2");
    widget2.setParent(&widget, widget.windowFlags());
    widget2.show();
    

    }
    @

    Any suggestions?



  • I guess it depends on a window manager.
    For example in Gnome3 a widget window from your example is always below widget2 window.
    But widget gets focus when mouse goes over it and I can put it above widget2 if I select "Always on Top" from a titlebar menu.



  • Ok, but is there a way to make windows on Linux behave in the same floating manor as on Windows?

    The closest I can see is to set the always on top flag for child windows, but that won't really work with children of children correctly.



  • Could always do something like this for the first window:

    Declare widget1 to have a member childWidget.virtual method for

    @ widget1.childWidget = &widget2;@

    And write out its virtual method for the focusInEvent() with something like:

    @void MainWindow::focusInEvent(QFocusEvent *)
    {
    if (childWidget)
    childWidget->raise();
    }
    @

    Can propigate the raise for all other children as well.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.