0

QToolButton有没有办法在其顶部而不是下方显示其关联的QMenu ?

我看到了这个让我满意的答案,但它是用 Python 编写的,我真的不知道如何正确移植它。

我还查看了QMenu 的源代码,但它非常庞大,所以我真的不知道如何解决这个问题。

按钮上还有一个小箭头,表示它会弹出。 这是情况

这是我窗口的最底部,所以我希望它弹出以防它变得太大而无法容纳。

4

1 回答 1

1

您可以使用事件过滤器来做到这一点:

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;
}
于 2017-11-13T16:05:45.490 回答