首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QToolButton:更改菜单位置

QToolButton:更改菜单位置
EN

Stack Overflow用户
提问于 2011-12-07 20:56:25
回答 2查看 1.6K关注 0票数 5

当使用带有QToolButton的菜单时,菜单就显示在按钮的正下方。有没有办法在按钮的左边/右边显示菜单?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-08 01:57:30

这个位置在Qt安装目录/src/gui/widgets/qtoolbutton.cpp的函数void QToolButtonPrivate::popupTimerDone()中是硬编码的。这似乎很难覆盖它,除非你从头开始实现你自己的弹出菜单。

票数 3
EN

Stack Overflow用户

发布于 2017-08-28 23:31:47

我知道这个问题已经回答了一段时间,但我想为这个问题添加一个新的答案,因为接受的答案不再有效。实际上,更改QToolButton上的菜单位置非常容易。您需要继承QMenu的子类并覆盖事件函数。当有显示事件时,只需更改菜单的位置。

下面是一个使用PySide的简单示例:

代码语言:javascript
复制
from PySide import QtCore, QtGui

class MyMenu(QtGui.QMenu):
    def event(self,event):
        if event.type() == QtCore.QEvent.Show:
            self.move(self.parent().mapToGlobal(QtCore.QPoint(0,0))-QtCore.QPoint(0,self.height()))
        return super(MyMenu,self).event(event)

if __name__ == "__main__":
    app = QtGui.QApplication([])
    w = QtGui.QWidget()
    w.setGeometry(100,100,500,500)
    tb = QtGui.QToolButton(w)
    tb.setText("HELLO")
    tb.setGeometry(70,70,40,30)
    m = MyMenu("Menu",tb)
    m.addAction("Exit")
    tb.setMenu(m)
    w.show()
    app.exec_()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8415658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档