金华手机网站建设,福州自适应网站建设,深圳网站制作运营,热点时事新闻通过设置setSelectionMode(QAbstractItemView.MultiSelection)#xff0c;可以实现QWidgetList的多选。 但是上述结果不太符合我们需求。设置多选模式后#xff0c;只需鼠标点击就可以选择多个条目。 我希望按下Ctrl键时才进行多选#xff0c;仅鼠标单击的话#xff0c;只进… 通过设置setSelectionMode(QAbstractItemView.MultiSelection)可以实现QWidgetList的多选。 但是上述结果不太符合我们需求。设置多选模式后只需鼠标点击就可以选择多个条目。 我希望按下Ctrl键时才进行多选仅鼠标单击的话只进行单选。如何实现
下面是样例维护一个变量ori_multi_select记录ctrl的按下状态
class MainView(QMainWindow):def __init__(self):super().__init__()self.ui u1.Ui_MainWindow()self.ui.setupUi(self)#初始化self.ui.ori_list.setSelectionMode(QAbstractItemView.MultiSelection)self.grabKeyboard()#变量self.ori_multi_selectTrue#信号与槽self.ui.ori_list.currentRowChanged.connect(self.change_selected) # 当鼠标选择某一行时触发def change_selected(self,index:int):print(f选中行数{index}\n信号触发)if index0:returnif not self.ori_multi_select: # 如果没有不处于多选模式没有按住ctrl键self.ui.ori_list.clearSelection() # 清除选择状态def keyPressEvent(self, event: QKeyEvent) - None:# 如果按下ctrl键if event.key() Qt.Key_Control:self.ori_multi_select True # 进入多选模式def keyReleaseEvent(self, event: QKeyEvent) - None:# 如果松开ctrl键if event.key() Qt.Key_Control:self.ori_multi_select False # 退出多选模式