Wiem, jak wykonać proste QTreeView() z QDirModel (lub QFileSystemModel), aby wyświetlić pliki/foldery w systemie, ale chcę dodać pole wyboru przy każdym z nich aby użytkownik mógł wybrać niektóre foldery/pliki w swoim systemie. Oczywiście, muszę też wiedzieć, które zostały wybrane. Jakieś wskazówki?Widok lokalnego katalogu PyQt4 z opcją wyboru folderów
zasadzie coś takiego ...
Poniżej znajduje się przykładowy kod, który sprawia, że widok katalogu ale bez wyboru.
from PyQt4 import QtGui
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
model = QtGui.QDirModel()
tree = QtGui.QTreeView()
tree.setModel(model)
tree.setAnimated(False)
tree.setIndentation(20)
tree.setSortingEnabled(True)
tree.setWindowTitle("Dir View")
tree.resize(640, 480)
tree.show()
sys.exit(app.exec_())
Działa to dobrze, ale czy wiesz, jak go zmodyfikować tak, gdy ktoś kliknie na C: to wszystkie podkategorie dostać kliknął i kiedy jeden kliknął podkategorię C: stał się kropką (na wpół sprawdzone)? – Kiarash
@ Kiarash Powinieneś odpowiednio zmienić indeksy dzieci i rodziców 'index' w' setData'. Aby uzyskać indeks potomny, użyj 'QModelIndex.child'. Aby uzyskać indeks macierzysty, użyj 'QModelIndex.parent'. Aby uzyskać liczbę dzieci z danego indeksu, powinieneś użyć 'QDirModel.rowCount'. Zobacz [to] (http://pyqt.sourceforge.net/Docs/PyQt4/qmodelindex.html) i [this] (http://pyqt.sourceforge.net/Docs/PyQt4/qabstractitemmodel.html#rowCount) – user2155932
w setData, po prostu dodałem to: dla i w zakresie (self.rowCount (indeks)): self.setData (index.child (i, 0), wartość, rola) ALE jest tak wolno, jeśli kliknie się na C:. Wszelkie pomysły, jak to rozwiązać? – Kiarash