QT 当手指按下QPushButton手指滑离QPushButton ,但QPushButton没有弹出的动作,我想手指离开QPushButton 时,让它弹起 需要怎么处理?
时间: 2023-06-06 14:08:30 浏览: 35
您可以在QPushButton上安装一个事件过滤器,重写过滤器的事件处理函数,在鼠标释放事件中检测QPushButton是否被按下并释放,如果是,则发出clicked信号。如果不需要等待按钮释放可以设置QPushButton为自动重复模式(autoRepeat),默认是false。
相关问题
QT 当手指按下QPushButton手指滑离QPushButton ,但QPushButton没有弹出的动作,需要怎么处理?
您可以使用QPushButton的pressed和released信号来实现该功能,将pressed信号链接到一个槽函数,该函数在按钮被按下时执行,将released信号链接到另一个槽函数,该函数在按钮被释放时执行。您可以在pressed槽函数中记录按钮被按下的位置,然后在released槽函数中判断手指是否在按钮上释放,如果是,则执行弹出操作,否则忽略。
qt 点击按钮弹出下拉窗口_设置Qt QPushButton弹出菜单的位置(向右)
您可以使用QMenu和QAction类来实现QPushButton弹出菜单。以下是一个简单的示例:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QMenu, QAction
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
button = QPushButton("Click me", self)
button.setFixedWidth(100)
button.setFixedHeight(30)
button.move(50, 50)
button.clicked.connect(self.show_menu)
self.show()
def show_menu(self):
menu = QMenu(self)
action1 = QAction("Action 1", self)
action2 = QAction("Action 2", self)
menu.addAction(action1)
menu.addAction(action2)
button = self.sender()
menu.exec_(button.mapToGlobal(button.rect().bottomRight()))
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
app.exec_()
```
在这个示例中,我们创建了一个QPushButton和一个QMenu,然后将两个QAction添加到QMenu中。当按钮被点击时,我们调用show_menu函数来显示QMenu。在show_menu函数中,我们使用sender()方法获取发送信号的对象,即QPushButton。然后我们使用mapToGlobal方法将QPushButton的右下角映射到全局坐标系中,并使用exec_方法显示QMenu。
如果您希望弹出菜单向右弹出,可以使用mapToGlobal方法将QPushButton的右上角映射到全局坐标系中,并将其作为QMenu的弹出位置。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)