• 4571阅读
  • 5回复

[提问]请问实现QListWidget的item设置成只识别鼠标左键点击 [复制链接]

上一主题 下一主题
离线vjter
 

只看楼主 倒序阅读 楼主  发表于: 2016-07-23
listwidget的itemClicked信号鼠标左右键都能发送,现在我想实现只有在点击鼠标左键的时候才连接槽函数。
我个人是自定义了一个继承QListWidget的类,在类中重写了mousePressEvent函数,在函数中判断如果是鼠标左键,就进行emit()。这么做出现了一个问题,就是我在父窗口中实例化这个自定义类后,鼠标左键点击item后item没有选中状态,导致很多后续操作都没效果。

请教下各位大神我应该怎么改?或者,有没有更好的办法实现我的意图?麻烦不吝赐教
离线vjter

只看该作者 1楼 发表于: 2016-07-23
离线vjter

只看该作者 2楼 发表于: 2016-07-23
贴下我的代码,不过我是用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(槽函数)
离线vjter

只看该作者 3楼 发表于: 2016-07-23
鼠标点右键不会触发槽函数了,但是鼠标左键点了,listwidget中的item也没选中状态了,一脸懵逼
离线vjter

只看该作者 4楼 发表于: 2016-07-23
另外想了一种方法,就是当鼠标移动到item上面时,将该item设置为选中状态。。但是写不出来
离线6gongzi

只看该作者 5楼 发表于: 2016-07-25
“在类中重写了mousePressEvent函数,‘
这样做的话,会破坏QListWidget的交互行为
例如:选中,多选,激活,右键菜单,等操作
建议不要改变原有的发送信号的机制,在接收方做判断,只响应左键点击产生的itemClicked信号

快速回复
限100 字节
 
上一个 下一个