PyQt学习笔记:Qt.MatchFlag枚举类的取值及含义

115 篇文章 ¥59.90 ¥99.00
本文介绍了PyQt中Qt.MatchFlag枚举类在Model/View设计模式下的作用,详细阐述了MatchExactly、MatchFixedString等取值的含义,并提供了一个使用示例,帮助读者理解如何根据需求选择匹配标志进行数据搜索。

PyQt学习笔记:Qt.MatchFlag枚举类的取值及含义

在PyQt中,Model/View是一种常用的设计模式,用于在用户界面中显示和编辑数据。在Model/View模式中,Qt提供了许多用于搜索和过滤数据的功能。其中,Qt.MatchFlag枚举类提供了一些标志,用于指定搜索和匹配的行为。

Qt.MatchFlag枚举类定义了以下取值:

  • Qt.MatchExactly:表示只有在目标项与搜索项完全匹配时才匹配成功。
  • Qt.MatchFixedString:表示搜索项是一个固定字符串,而不是正则表达式。
  • Qt.MatchContains:表示目标项包含搜索项即匹配成功。
  • Qt.MatchStartsWith:表示目标项以搜索项开头即匹配成功。
  • Qt.MatchEndsWith:表示目标项以搜索项结尾即匹配成功。
  • Qt.MatchRegExp:表示搜索项是一个正则表达式。

下面是一个使用Qt.MatchFlag的示例代码:

from PyQt5.QtCore import Qt

# 模拟一个数据列表
data = 
找到的 QTextEdit 数量: 11 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 安装事件过滤器 已为控件 <PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 安装事件过滤器 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:14,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:17,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:26,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:74,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:78,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:24,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:13,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:10,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:11,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:10,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:11,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:10,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:11,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:10,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:11,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:10,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:207,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:8,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:207,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:2,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:9,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:11,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:8,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:12,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:23,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:25,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0> 收到事件:9,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA310> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA550> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA790> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFA9D0> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAC10> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFAE50> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE0D0> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE310> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE550> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE790> 收到事件:18,来自:<PyQt5.QtWidgets.QTextEdit object at 0x000002573BFFE9D0>
最新发布
08-12
从你的日志来看,**事件过滤器已经成功安装到 11 个 `QTextEdit` 控件上**,并且它们都接收到了各种事件(如 13=MouseButtonPress,14=MouseButtonRelease,26=MouseMove 等)。 但你仍然 **没有看到拦截右键菜单事件的日志输出**,这说明: --- ## ❗问题定位:`QEvent.ContextMenu` 事件未被触发或未被正确识别 --- ## ✅ 日志中事件类型含义参考(部分) | 数值 | 事件类型 | 含义 | |------|---------------------------|------| | 2 | `QEvent.Close` | 窗口关闭 | | 8 | `QEvent.Destroy` | 控件销毁 | | 10 | `QEvent.Enter` | 鼠标进入控件 | | 11 | `QEvent.Leave` | 鼠标离开控件 | | 12 | `QEvent.FocusIn` / `FocusOut` | 聚焦/失焦 | | 13 | `QEvent.MouseButtonPress` | 鼠标按下 | | 14 | `QEvent.MouseButtonRelease`| 鼠标释放 | | 21 | `QEvent.ContextMenu` | 右键菜单事件 | | 26 | `QEvent.MouseMove` | 鼠标移动 | | 74 | `QEvent.HoverEnter` | 鼠标悬停进入 | | 78 | `QEvent.HoverMove` | 鼠标悬停移动 | | 25 | `QEvent.Paint` | 控件重绘 | --- ## ✅ 你当前的 `eventFilter` 逻辑应该是: ```python def eventFilter(self, obj, event): if isinstance(obj, QTextEdit) and event.type() == QEvent.ContextMenu: print("✅ 拦截到右键菜单事件!") self.show_custom_context_menu(obj, event) return True return super().eventFilter(obj, event) ``` 但是你没有看到 `"✅ 拦截到右键菜单事件!"`,说明: - ❌ 事件未触发; - ❌ 事件被其他控件拦截; - ❌ 事件类型判断错误; - ❌ 控件本身处理了右键事件(比如重写了 `contextMenuEvent`); --- ## ✅ 排查建议 ### ✅ 1. 打印所有事件类型,确认是否收到 `QEvent.ContextMenu`(21) ```python from PyQt5.QtCore import QEvent def eventFilter(self, obj, event): print(f"收到事件:{event.type()},来自:{obj}") if event.type() == QEvent.ContextMenu: print("✅ 拦截到右键菜单事件!") self.show_custom_context_menu(obj, event) return True return super().eventFilter(obj, event) ``` 右键点击任意 `QTextEdit`,观察输出中是否有: ``` 收到事件:21,来自:<PyQt5.QtWidgets.QTextEdit object at 0x...> ✅ 拦截到右键菜单事件! ``` 如果没有看到 `21`,说明事件根本没有触发。 --- ## ✅ 2. 手动发送 `QContextMenuEvent` 测试 ```python from PyQt5.QtCore import QContextMenuEvent from PyQt5.QtGui import QMouseEvent # 假设你有 self.text_edit 是一个 QTextEdit 控件 event = QContextMenuEvent(QContextMenuEvent.Mouse, self.text_edit.rect().center()) QApplication.postEvent(self.text_edit, event) ``` 如果这时你看到了拦截日志,说明: - ✅ 你的 `eventFilter` 是正常的; - ❌ 问题是:系统未自动触发 `QEvent.ContextMenu`。 --- ## ✅ 3. 检查是否子类重写了 `contextMenuEvent` 如果你的 `QTextEdit` 是某个子类的实例,并且该子类重写了 `contextMenuEvent`,那么 `eventFilter` 不会触发。 你可以打印每个控件的类型: ```python for widget in self.findChildren(QTextEdit): print(f"控件类型:{type(widget)}") ``` 如果输出是: ``` 控件类型:<class '__main__.MyCustomTextEdit'> ``` 而不是: ``` 控件类型:<class 'PyQt5.QtWidgets.QTextEdit'> ``` 那么你需要检查这个子类是否重写了 `contextMenuEvent`: ```python class MyCustomTextEdit(QTextEdit): def contextMenuEvent(self, event): pass # 这会阻止 eventFilter 被调用 ``` --- ## ✅ 4. 完整测试代码(确保事件过滤器正常) ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QMenu from PyQt5.QtCore import QEvent, QContextMenuEvent import sys class MyWindow(QMainWindow): def __init__(self): super().__init__() self.text_edit = QTextEdit() self.setCentralWidget(self.text_edit) # 为所有 QTextEdit 安装事件过滤器 for widget in self.findChildren(QTextEdit): widget.installEventFilter(self) print(f"已为控件 {widget} 安装事件过滤器") # 手动发送右键菜单事件 from PyQt5.QtCore import Qt event = QContextMenuEvent(QContextMenuEvent.Mouse, self.text_edit.rect().center()) QApplication.postEvent(self.text_edit, event) def eventFilter(self, obj, event): print(f"收到事件:{event.type()},来自:{obj}") if event.type() == QEvent.ContextMenu: print("✅ 拦截到右键菜单事件!") self.show_custom_context_menu(obj, event) return True return super().eventFilter(obj, event) def show_custom_context_menu(self, text_edit, event): menu = QMenu(self) paste_action = menu.addAction("只粘贴文本") action = menu.exec_(event.globalPos()) if action == paste_action: self.paste_plain_text(text_edit) def paste_plain_text(self, widget): clipboard = QApplication.clipboard() if clipboard.mimeData().hasText(): plain_text = clipboard.text() cursor = widget.textCursor() char_format = widget.currentCharFormat() cursor.insertText(plain_text, char_format) if __name__ == '__main__': app = QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_()) ``` --- ## ✅ 总结 | 问题 | 原因 | 解决方法 | |------|------|----------| | 未进入 `eventFilter` 的右键判断 | 事件类型未匹配 | 使用 `QEvent.ContextMenu` | | 控件重写了 `contextMenuEvent` | 事件过滤器不触发 | 检查子类实现 | | 事件未触发 | 系统行为或模拟问题 | 手动发送 `QContextMenuEvent` | | 控件类型不符 | 点击了非 `QTextEdit` | 打印 `type(widget)` 检查 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值