QTreeView: получить список только выделенных элементов (множественный выбор)
Я хотел бы получить пути папок множественного выбора. Я хочу получить только те, которые выделены при нажатии. В идеале, список будет обновляться в интерактивном режиме. Я имею в виду, если одна папка не выбрана, она автоматически удаляется из списка.
Вот пример QTreeView ниже... Можете ли вы оказать поддержку, пожалуйста?
Спасибо
from PyQt4 import QtCore, QtGui
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.resize(1150, 905)
self.gridLayout_2 = QtGui.QGridLayout(Dialog)
self.groupBox = QtGui.QGroupBox(Dialog)
self.gridLayout = QtGui.QGridLayout(self.groupBox)
self.treeView = QtGui.QTreeView(self.groupBox)
self.gridLayout.addWidget(self.treeView, 0, 0, 1, 1)
self.gridLayout_2.addWidget(self.groupBox, 0, 0, 1, 2)
self.fileSystemModel = QtGui.QFileSystemModel(self.treeView)
self.fileSystemModel.setFilter(QtCore.QDir.AllDirs | QtCore.QDir.NoDotAndDotDot | QtCore.QDir.AllEntries)
self.fileSystemModel.setReadOnly(True)
self.root = self.fileSystemModel.setRootPath('/home/')
self.treeView.setModel(self.fileSystemModel)
self.treeView.setRootIndex(self.root)
self.treeView.setSelectionMode(QtGui.QAbstractItemView.ContiguousSelection)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
1 ответ
Вы можете использовать selectedIndexes()
метод QItemSelectionModel.
from PyQt4 import QtCore, QtGui
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.resize(1150, 905)
self.gridLayout_2 = QtGui.QGridLayout(Dialog)
self.groupBox = QtGui.QGroupBox(Dialog)
self.gridLayout = QtGui.QGridLayout(self.groupBox)
self.treeView = QtGui.QTreeView(self.groupBox)
self.gridLayout.addWidget(self.treeView, 0, 0, 1, 1)
self.gridLayout_2.addWidget(self.groupBox, 0, 0, 1, 2)
self.fileSystemModel = QtGui.QFileSystemModel(self.treeView)
self.fileSystemModel.setFilter(QtCore.QDir.AllDirs |
QtCore.QDir.NoDotAndDotDot | QtCore.QDir.AllEntries)
self.fileSystemModel.setReadOnly(True)
self.root = self.fileSystemModel.setRootPath('/home/')
self.treeView.setModel(self.fileSystemModel)
self.treeView.setRootIndex(self.root)
self.treeView.setSelectionMode(QtGui.QAbstractItemView.ContiguousSelection)
self.treeView.selectionModel().selectionChanged.connect(self.getItems)
def getItems(self):
selected = self.treeView.selectionModel().selectedIndexes()
for index in selected:
if index.column() == 0:
print self.fileSystemModel.data(index,
self.fileSystemModel.FileNameRole).toString()
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())