鱼C论坛

 找回密码
 立即注册
查看: 3540|回复: 18

关于Qt中按键的右键事件名称的求助

[复制链接]
发表于 2023-8-20 11:00:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在vs code 环境中配置了Python3.11,并使用 Qt6设计了一个界面,添加了 QPushButton类型的按钮,并对其单击事件使用 def on_send_clicked(self)  进行了事件处理。

现在我想请教,如果我想对按钮的“鼠标右击”事件进行处理,有与 click 对应的右击事件名吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-8-20 11:32:08 | 显示全部楼层
陶远航 发表于 2023-8-20 11:02
在Qt中,用于处理鼠标右击事件的方法名是contextMenuEvent。它是QWidget类的一个成员函数,可以重写这个函 ...

谢谢指导,我看您提供的第一种方案是最简单的,想请问其中的QPushButton和Event是固定参数还是需要替换为我代码中的名称?
不好意思,我近乎小白,知道得太少了。

另补充:我是希望对同一个按钮编写单击和右击两个事件代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-20 12:37:17 | 显示全部楼层
陶远航 发表于 2023-8-20 11:35
不用担心,我很乐意帮助您理解这些概念!让我进一步解释一下:

在提供的第一个方案中,我示范了如何通 ...

谢谢你的热情指导。
提示第10行语句 self.button.setContextMenuPolicy(Qt.CustomContextMenu) 中的 Qt 未定义,请问是什么问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-20 12:48:25 | 显示全部楼层
陶远航 发表于 2023-8-20 12:38
很抱歉,我没有在之前的代码中导入 Qt 对象。Qt 是 PyQt 中的一个模块,需要导入才能使用。请添加以下导 ...

谢谢您的耐心才是。是我没描述清楚需求,我再补充一下:
我已有一个名为send的button,且已完成 on_send_clicked 单击事件代码,现在想对其编写右击事件代码。

我看您的代码中有一行 self.button = QPushButton("My Button") , 这是新建了一个button对吧?还是说只是通过它实现我需求的功能?  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-20 13:07:43 | 显示全部楼层
陶远航 发表于 2023-8-20 12:50
我理解您已经有一个名为 send 的按钮,并且已经完成了其单击事件的处理函数 on_send_clicked。您想要添加 ...

右键功能已实现,您是我遇到的最有耐心的老师。

非常抱歉我还是忘了说明一点,我是通过Qt6 Desiger 进行的界面设计,界面中已有一个名内部名称为 send (显示名称为"发送")的button, 按您的指导添加代码后,另外生成了一个名为send的按钮,其单击和我原有的“发送:按钮功能相同,右击功能是我想要完成的。但我只是想在原有的”发送“按钮上实现右击功能。

不知道我这样描述清楚了没有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-20 13:35:15 | 显示全部楼层
本帖最后由 hynet1024 于 2023-8-20 13:36 编辑
陶远航 发表于 2023-8-20 13:12
感谢您的理解和说明。我明白您的需求了:您在Qt6 Designer中设计了一个界面,已经有一个名为 send 的按 ...


需要您的持续耐心:

class MyWidget(QWidget):
        def __init__(self):
                super().__init__()
                self.ui = Ui_Form()
                self.ui.setupUi(self)

                send_button = self.ui.send
                self.send_button.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
                self.send_button.customContextMenuRequested.connect(self.on_send_right_clicked)


        @Slot()
        def on_send_right_clicked(self):
                self.ui.message.clear()
                self.ui.message.append("<font color=\"#FF0000\">OKOKOK</font>")[code]class

以下是错误信息:
AttributeError: 'MyWidget' object has no attribute 'send_button'


send的objectName为send无误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-20 13:40:19 | 显示全部楼层
陶远航 发表于 2023-8-20 13:36
错误是因为在您的代码中,您尝试使用了 self.send_button,但是您之前定义的变量名是 send_button,因 ...

完美!非常非常感谢,不只是解决了一个问题,更重要的是学习到了一个技能,向您学习,感谢您的专业、您的耐心,您的热情!

点评

设置一个最佳答案呗  发表于 2023-8-20 13:41
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-20 13:46:37 | 显示全部楼层
sfqxx 发表于 2023-8-20 13:23
他用的是chatgpt,只不过加了一点人工而已,你回复的是他,你可以回复isdkz,他也会耐心的回你

谢谢,问题已解决!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-22 06:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表