Разница между Window и ApplicationWindow в QML?

#qt #qml #qtquick2 #qt5.12

#qt #qml #qtquick2 #qt5.12

Вопрос:

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

Панель меню поддерживается в ApplicationWindow , а не в Window .

Следующее выдает ошибку «Недопустимое имя свойства: панель меню»

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

    menuBar: MenuBar {
          Menu {}
    }
}
 

в то время как следующие работы:

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

    menuBar: MenuBar {
          Menu {}
    }
}
 

В новой версии Qt 5.12 код по умолчанию использует Window , а не ApplicationWindow .

В чем разница между Window и ApplicationWindow ? Какой из них следует использовать в каком случае?

Комментарии:

1. Window является базовым типом QML. Это просто окно. ApplicationWindow является частью QtQuick Controls 2 и имеет ту же функциональность, QMainWindow что и . Какой из них использовать, зависит от вас. Если вам нужно простое окно, используйте Window . Если вам нужна расширенная функциональность, используйте ApplicationWindow .

Ответ №1:

Документы очень понятны:

ApplicationWindow — это окно, которое добавляет удобства для позиционирования элементов, таких как панель меню, панель инструментов и строка состояния, независимым от платформы образом.

То есть это элемент, который наследуется от Window, но имеет определенные атрибуты по умолчанию, он похож на QMainWindow в отношении QWidget.

Когда вы говорите: в новой версии Qt 5.12 код по умолчанию использует Window, а не ApplicationWindow, я полагаю, вы имеете в виду, что QtCreator использует Window по умолчанию при создании проектов, это просто потому, что так захотели разработчики, и в этом нет науки, просто выбор.

Когда вы должны использовать тот или иной вариант, зависит от того, когда вы хотите настроить и устраивает ли вас структура ApplicationWindow, поскольку, как вы можете видеть, последняя имеет предопределенную структуру.

Примечание: Есть 2 элемента, называемые ApplicationWindow 1, 2

Комментарии:

1. Я благодарен вам. Не знал, что есть документы, в которых упоминается все это.

2. @Aquarius_Girl Что ж, в следующий раз вам придется читать и перечитывать документацию, поскольку многие ответы там есть.