问题来源
QListWidget 中有itemClicked和itemDoubleClicked两个信号, 分别代表鼠标单击和鼠标双击信号. 不过如果要同时用这两个信号就会发现itemDoubleClicked 信号会触发itemClicked信号. 如果是两个无关的操作倒是没关系, 但如果正好要把这两个信号的槽定义为有关联的动作就要区分这两个信号了, 也就是让itemDoubleClicked不会触发itemClicked.
解决方法
Qt 中对于这个问题没有现成的解决方法. 有些人建议如果能不同时使用这两个信号就不同时使用. 如果实在想用也是有办法解决的, 自己写个区分两个信号的方法即可.
在Stackoverflow上有这样一种写法:
1 | void YourClass::itemClicked(QListWidgetItem* listWidgetItem) { |
转换成PyQt的写法就是:
1 | class Main(QtGui.QMainWindow): |
参考资料:
《QListWidget itemClicked and itemDoubleClicked - block single click if double click》