2024-10-01 13:42:46 发布
网友
我有一个带有自定义列表对象的QComboBox。在
QComboBox
customlist对象有一个自定义的mousePressEvent,因此当用户单击带有+/-(一个曲折的)的圆时,列表将展开/折叠。在
mousePressEvent
当我将列表与组合框一起使用时,当用户单击一个twisty时,列表将展开/折叠,但选择将更改,列表将隐藏。我如何过滤它,以便当用户点击一个扭曲,选择不改变,列表不隐藏。在
所有节点折叠:
列表隐藏:
在我的脑子里,你可以子类QComboBox并重写hideEvent(QHideEvent)(继承自QWidget)
hideEvent(QHideEvent)
QWidget
def hideEvent(self, event): if self.OkToHide(): event.accept() else: event.ignore()
你的截图看起来像是组合框的有趣用法,我很好奇为什么你没有使用TreeView样式的控件而不是列表?在
TreeView
编辑(2009年3月14日):
我查看了Qt源代码,当捕捉到键盘和鼠标事件时,Qt一旦决定发出"activated(int index)"信号,"hidePopup()"就被调用了。在
"activated(int index)"
"hidePopup()"
因此,除了重写事件过滤器代码外,另一个选择是将"activated(int index)"或"highlighted(int index)"信号连接到一个可以调用"showPopup()"的插槽,该插槽将重新提升列表项。如果出现严重的“消失/显示”绘制问题,则可能需要让Qt在弹出窗口可见时延迟绘制事件。在
"highlighted(int index)"
"showPopup()"
希望有帮助!在
QT有一个eventFilter,它“捕获”QEvent.MouseButtonRelease。因此,我所做的就是安装我自己的eventFilter,它在用户单击某个节点时过滤QEvent.MouseButtonRelease事件。在
eventFilter
QEvent.MouseButtonRelease
在我的列表对象中,我有以下方法:
def mousePressEvent (self, e): self.colapse_expand_click = False if <user clicked node>: colapse_expand_node() e.accept () self.colapse_expand_click = True
mousePressEvent在^{之前运行。在
然后在自定义组合框中,过滤事件:
在我的脑子里,你可以子类
QComboBox
并重写hideEvent(QHideEvent)
(继承自QWidget
)你的截图看起来像是组合框的有趣用法,我很好奇为什么你没有使用
TreeView
样式的控件而不是列表?在编辑(2009年3月14日):
我查看了Qt源代码,当捕捉到键盘和鼠标事件时,Qt一旦决定发出
"activated(int index)"
信号,"hidePopup()"
就被调用了。在因此,除了重写事件过滤器代码外,另一个选择是将
"activated(int index)"
或"highlighted(int index)"
信号连接到一个可以调用"showPopup()"
的插槽,该插槽将重新提升列表项。如果出现严重的“消失/显示”绘制问题,则可能需要让Qt在弹出窗口可见时延迟绘制事件。在希望有帮助!在
QT有一个
eventFilter
,它“捕获”QEvent.MouseButtonRelease
。因此,我所做的就是安装我自己的eventFilter
,它在用户单击某个节点时过滤QEvent.MouseButtonRelease
事件。在在我的列表对象中,我有以下方法:
mousePressEvent
在^{然后在自定义组合框中,过滤事件:
^{pr2}$相关问题 更多 >
编程相关推荐