QML 中 Window 和 ApplicationWindow 的区别?

Aqu*_*irl 5 qt qml qtquick2 qt5.12

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

MenuBar 在 中受支持ApplicationWindow,但在Window.

以下抛出错误“属性名称无效:MenuBar”

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

    menuBar: MenuBar {
          Menu {}
    }
}
Run Code Online (Sandbox Code Playgroud)

而以下作品:

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

    menuBar: MenuBar {
          Menu {}
    }
}
Run Code Online (Sandbox Code Playgroud)

在新的 Qt 版本 5.12 中,默认代码使用Windowand not ApplicationWindow

Window和 和有什么区别ApplicationWindow?在什么情况下应该使用哪一个?

eyl*_*esc 7

文档非常清楚

ApplicationWindow 是一个以独立于平台的方式增加定位项目(例如 MenuBar、ToolBar 和 StatusBar)的便利性的窗口。

也就是说,它是一个继承自Window但具有某些默认属性的项,就QWidget而言,它与QMainWindow类似。

当您说:在新的 Qt 版本 5.12 中,默认代码使用 Window 而不是 ApplicationWindow我想您的意思是 QtCreator 在创建项目时默认使用 Window,那只是因为开发人员想要这样做,而且其中没有任何科学依据,只是一个选择。

何时应该使用其中之一取决于您何时想要自定义以及您是否对 ApplicationWindow 结构感到满意,因为如您所见,后者具有预定义的结构。

注意:有 2 个项目称为 ApplicationWindow 1 , 2