Search code examples
qtqmlqtquick2qt5.12

Difference between Window and ApplicationWindow in QML?


https://doc.qt.io/qt-5/qml-qtquick-controls2-menubar.html

MenuBar is supported in ApplicationWindow and not in Window.

Following throws an error "Invalid property name: MenuBar"

Window
{
    visible: true
    width: 280; height: 280

    menuBar: MenuBar {
          Menu {}
    }
}

whereas following works:

ApplicationWindow
{
    visible: true
    width: 280; height: 280

    menuBar: MenuBar {
          Menu {}
    }
}

In the new Qt version 5.12, the default code uses Window and not ApplicationWindow.

What is the difference between Window and ApplicationWindow? Which one should be used in which case?


Solution

  • The docs is very clear:

    ApplicationWindow is a Window that adds convenience for positioning items, such as MenuBar, ToolBar, and StatusBar in a platform independent manner.

    That is, it is an item that inherits from Window but has certain default attributes, it is similar to QMainWindow with respect to QWidget.

    When you say: In the new Qt version 5.12, the default code uses Window and not ApplicationWindow I suppose you mean that QtCreator uses Window by default in creating projects, that's just because the developers wanted to and there is no science in it, just a choice.

    When you should use one or the other depends on when you want to customize and if you are comfortable with the ApplicationWindow structure since as you can see the latter has a predefined structure.

    Note: There are 2 items called ApplicationWindow 1, 2