在Qt 5.9中将QToolButton显示在顶部

时间:2017-11-13 15:18:50

标签: c++ qt user-interface qt5.9

QToolButton是否可以在其上方而不是在下方显示关联的QMenu

我看到this的答案令我高兴,但它是用Python编写的,我真的不知道如何正确移植它。

我还看了一下source code for QMenu,但它非常强大,所以我真的不知道如何解决这个问题。

按钮上还有一个小箭头,表示它会弹出。 Here is the situation

这是我窗户的最底层所以我希望它能够弹出以防它变得太大而不适合。

1 个答案:

答案 0 :(得分: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;
}