首页| 论坛| 消息

标题:请问实现QListWidget的item设置成只识别鼠标左键点击
作者:vjter
日期:2016-07-23 18:59
内容:

listwidget的itemClicked信号鼠标左右键都能发送,现在我想实现只有在点击鼠标左键的时候才连接槽函数。
我个人是自定义了一个继承QListWidget的类,在类中重写了mousePressEvent函数,在函数中判断如果是鼠标左键,就进行emit()。这么做出现了一个问题,就是我在父窗口中实例化这个自定义类后,鼠标左键点击item后item没有选中状态,导致很多后续操作都没效果。
请教下各位大神我应该怎么改?或者,有没有更好的办法实现我的意图?麻烦不吝赐教


#1 [vjter 07-23 19:33]

#2 [vjter 07-23 19:36]
贴下我的代码,不过我是用pyqt写的,就是python版的qt,语法跟c++不一样,但是函数的名字是相似的
class MySignal(QObject):
signal = pyqtSignal()

class MyListWidget(QListWidget):
def __init__(self,parent = None):
super(MyListWidget,self).__init__(parent)
self.ClickSignal = MySignal()
def mousePressEvent(self,event):
if event.button() == Qt.LeftButton:
self.ClickSignal.signal.emit()
然后在父窗口中这样做:
self.listwidget = MyListWidget()
self.listwidget.ClickSignal.signal.connect(槽函数)
#3 [vjter 07-23 19:38]
鼠标点右键不会触发槽函数了,但是鼠标左键点了,listwidget中的item也没选中状态了,一脸懵逼
#4 [vjter 07-23 19:39]
另外想了一种方法,就是当鼠标移动到item上面时,将该item设置为选中状态。。但是写不出来
#5 [6gongzi 07-25 08:25]
“在类中重写了mousePressEvent函数,‘
这样做的话,会破坏QListWidget的交互行为
例如:选中,多选,激活,右键菜单,等操作
建议不要改变原有的发送信号的机制,在接收方做判断,只响应左键点击产生的itemClicked信号

回复 发表
主题 版块