qt 点击按钮弹出下拉窗口,设置Qt QPushButton弹出菜单的位置(向右)
时间: 2024-01-04 20:02:39 浏览: 199
ButtonMenu_qt下拉_excellentox7_qt界面_QT_basissh5_
可以使用QMenu和QAction来实现QPushButton弹出菜单。设置弹出菜单位置可以使用QMenu的exec方法和QCursor的pos方法来实现。
下面是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction, QPushButton
from PyQt5.QtCore import QPoint
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 400, 300)
btn = QPushButton("Click me", self)
btn.move(10, 10)
# 创建菜单
menu = QMenu(self)
menu.addAction(QAction("Action 1", self))
menu.addAction(QAction("Action 2", self))
menu.addAction(QAction("Action 3", self))
# 将菜单与按钮关联
btn.setMenu(menu)
# 设置菜单弹出的位置
btn.menu().setStyleSheet("QMenu{menu-scrollable: 1;}") # 让菜单可以滚动
btn.menu().setFixedWidth(100)
btn.menu().setFixedHeight(60)
btn.menu().setStyleSheet("background-color: white;") # 设置菜单背景色为白色
btn.menuAction().setVisible(False) # 隐藏默认弹出菜单
btn.clicked.connect(lambda: btn.menu().exec_(QPoint(btn.geometry().right(), btn.geometry().bottom()))) # 将菜单弹出位置设置为按钮的右下角
if __name__ == '__main__':
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()
```
在这个代码中,我们创建了一个QPushButton并将其与QMenu关联。我们将菜单弹出位置设置为按钮的右下角,使菜单向右弹出。
阅读全文