Я добавляю всплывающее меню в свой графический интерфейс QtQuick (as in here I believe), и он не ведет себя так, как я ожидал.Всплывающее меню QtQuick не работает должным образом
Вот что я делаю:
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.2
ApplicationWindow
{
...
// File menu button.
Rectangle
{
id: ribbonFileMenuButton
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
width: height
height: parent.height
scale: ribbonFileMenuButtonMA.pressed ? 1.3 : 1
color: "transparent"
// Icon.
RibbonFileButtonIcon
{
id: ribbonFileMenuButtonIcon
anchors.fill: parent
}
// Behavior.
MouseArea
{
id: ribbonFileMenuButtonMA
anchors.fill: parent
onClicked: menu.open() /*popup()*/
}
}
...
// File.
Menu
{
id: menu
y: 20
MenuItem
{
text: "New..."
}
MenuItem
{
text: "Open..."
}
// MenuSeparator { }
MenuItem
{
text: "Save"
}
}
...
}
Во-первых, я должен назвать menu.open() и не menu.popup() (как описано в документ, указанный в выше, при условии ссылка): menu.popup() выходы ошибки:
TypeError: свойство 'всплывающее окно' объекта QQuickMenu (0x20f40f0) не является функцией
Тогда, если я раскомментировать MenuSeparator {}, я получаю следующее сообщение об ошибке:
MenuSeparator не тип
Опять же, согласно документу в предоставленной ссылке, он должен работать.
Я просмотрел в Интернете, но я немного потерял ...
Спасибо,
Antoine.
Посмотрите, доступен ли MenuSeparator в разделе «import QtQuick.Controls 1.3»? – ManuelH
Hum ... Эта регрессия отвечает на мои вопросы. Это странно ... Кажется, QtQuick.Controls 2.0 - это полная переписывание, которая не полностью закончена ... Правильно ли я? – arennuit
Я не могу сказать с уверенностью, но это поможет, если вы укажете точную версию QT, которую используете. В настоящее время я использую 5.4, и в документации там четко указано, что для этой версии QT доступна версия «MenuSeparator», а версия QtQuick.Controls 1.3 я попросил вас попробовать. Если вы используете более новую версию QT, чем я, что, скорее всего, возможно, было очень возможно, что изменения были внесены в этот API между версиями QT. – ManuelH