1
我有一個QTableView中,這是創建這樣:PyQt的QTableView中選擇不連續的組行
self.preset_delegate = PresetDelegate() # used to provide a combobox for making a selection from a set of options, column 0
self.model_filelist = QtGui.QStandardItemModel()
self.model_filelist.setHorizontalHeaderLabels(HEADER_LABELS)
self.list_filelist = QtGui.QTableView()
self.list_filelist.horizontalHeader().setResizeMode(QtGui.QHeaderView.Interactive)
self.list_filelist.setItemDelegateForColumn(0, self.preset_delegate)
self.list_filelist.setModel(self.model_filelist)
self.list_filelist.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
當用戶按下一個按鈕,我想算法從表中選擇行。選擇不會是連續的。爲了我們討論的目的,它可以是模型/表中任意行的任意子集。
這是僞代碼,我使用作出選擇什麼:
files = [str(self.model_filelist.data(self.model_filelist.index(x,1)).toString()) for x in range(self.model_filelist.rowCount())]
self.list_filelist.clearSelection()
for x in match_set:
match_index = files.index(x)
model_index = self.model_filelist.index(match_index,1) # first column is okay
self.list_filelist.selectionModel().select(model_index, QtGui.QItemSelectionModel.Select | QtGui.QItemSelectionModel.Current)
我的問題是在最後一行的選擇與模型標誌。是否使用SelectCurrent,ToggleCurrent或Select |當前或切換|目前,我只能得到我的match_set中最後一項在循環結束時保持選中狀態。循環執行時,選擇將從一個項目更改爲另一個項目,而不是將新行添加到選擇集。我希望這是有道理的。
我確信SelectCurrent標誌是這樣做的方式,但它不適用於我。有什麼建議麼? (python 2.6.7,Fedora 14,Qt4.4 ???我不能確定)
我不認爲我曾經18個小時沒有人有任何建議。我重構了代碼以使用接受QItemSelection的select()函數,並使用一組包含感興趣的模型索引的ItemSelectionRange對象加載ItemSelection。這似乎工作。 –
如果你想出了一個解決方案,你可以回答自己的問題,並接受它。甚至鼓勵,有這樣做的徽章! – 2013-10-10 02:16:09
@樂高,好的,我會做的。 –