在 Qt 5.9 中使 QToolButton 显示菜单在顶部
Make QToolButton show menu on top in Qt 5.9
有没有办法让 QToolButton to display its associated QMenu 在上面而不是下面?
我看到 this 的回答让我很高兴,但它在 Python 中,我真的不知道如何正确移植它。
我也看了一下 source code for QMenu 但它实在是太多了,所以我真的不知道如何解决这个问题。
按钮上还有一个小箭头,表示它会弹出。
这是我的 window 的最底部,所以我希望它能弹出,以防它太大放不下。
您可以使用事件过滤器来完成:
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;
}
有没有办法让 QToolButton to display its associated QMenu 在上面而不是下面?
我看到 this 的回答让我很高兴,但它在 Python 中,我真的不知道如何正确移植它。
我也看了一下 source code for QMenu 但它实在是太多了,所以我真的不知道如何解决这个问题。
按钮上还有一个小箭头,表示它会弹出。
这是我的 window 的最底部,所以我希望它能弹出,以防它太大放不下。
您可以使用事件过滤器来完成:
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;
}