Сделать QToolButton показывать меню сверху в Qt 5.9

Есть ли способ для QToolButton отобразить его связанный QMenu сверху, а не внизу?

я видел этот ответ, который меня порадовал, но он написан на Python, и я не знаю, как правильно его портировать.

Я также взглянул на исходный код для QMenu но это довольно сложно, поэтому я не знаю, как решить эту проблему.

На кнопке также есть небольшая стрелка, показывающая, что она опускается вниз.
Вот ситуация

Это самая нижняя часть моего окна, поэтому я бы хотел, чтобы оно всплывало на случай, если оно станет слишком большим для размещения.

0

Решение

Вы можете сделать это, используя фильтр событий:

QMenu* yourMenu;
yourButton->setMenu(yourMenu);
yourMenu->installEventFilter(this);

bool yourClass::eventFilter(QObject * obj, QEvent *event)
{
if (event->type() == QEvent::Show && obj == yourButton->menu())
{
QPoint pos = /*the position expected*/;
yourButton->menu()->move(pos);
return true;
}
return false;
}

Чтобы удалить маленькую стрелку, добавьте это в свою таблицу стилей:

QToolButton::menu-indicator{
image: none;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]