Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from Qt import QtWidgets, QtCore
- class CustomProxyModel(QtCore.QSortFilterProxyModel):
- def __init__(self):
- super(CustomProxyModel, self).__init__()
- # self.setDynamicSortFilter(True)
- def rowCount(self, index):
- model_index = self.mapToSource(index)
- if not model_index.isValid():
- return 0
- new_rc = self.sourceModel().rowCount(model_index) + 1
- # self.insertRows(0)
- return new_rc
- def insertRows(self, position, rows=1, parent=QtCore.QModelIndex()):
- self.beginInsertRows(parent, position, position + rows - 1)
- for row in range(rows):
- self.insertRows(position, row, parent)
- self.setData(parent, "AWESOME")
- print 'AWESOME VIRTUAL ROW'
- self.endInsertRows()
- return True
- class MyWindow(QtWidgets.QDialog):
- k_base_path = '/home/harshad/skin_weights/'
- def __init__(self):
- super(MyWindow, self).__init__()
- self.create_widgets()
- self.create_connections()
- def create_widgets(self):
- # Layout
- layout = QtWidgets.QVBoxLayout()
- self.setLayout(layout)
- # TreeView
- self.view = QtWidgets.QTreeView()
- layout.addWidget(self.view)
- # Selection model
- self.selection_model = QtCore.QItemSelectionModel()
- self.view.setSelectionModel(self.selection_model)
- # Model
- self.model = QtWidgets.QFileSystemModel()
- self.model.setRootPath(QtCore.QDir.rootPath())
- # Set Model Filters
- self.model.setNameFilterDisables(False)
- self.model.setNameFilters(["*.xml"])
- # Proxy
- self.proxy = CustomProxyModel()
- self.proxy.setSourceModel(self.model)
- self.proxy.sort(0, QtCore.Qt.AscendingOrder)
- # View--Proxy--Model
- self.view.setModel(self.proxy)
- self.model_index = self.model.index(self.k_base_path)
- self.proxy_index = self.proxy.mapFromSource(self.model_index)
- self.view.setRootIndex(self.proxy_index)
- # Filters
- self.view.hideColumn(1)
- self.view.hideColumn(2)
- self.view.setSortingEnabled(True)
- self.view.setAlternatingRowColors(True)
- # self.view.sortByColumn(0, QtCore.Qt.AscendingOrder)
- self.view.header().setStretchLastSection(False)
- self.view.header().resizeSection(0, 200)
- # self.view.header().setSectionResizeMode(
- # 0, QtWidgets.QHeaderView.Stretch)
- # # self.view.header().setSectionResizeMode(
- # # 1, QtWidgets.QHeaderView.ResizeToContents)
- # self.view.header().setSectionResizeMode(
- # 3, QtWidgets.QHeaderView.ResizeToContents)
- # self.proxy.setData(self.proxy.index(0,1), "AWESOME")
- def create_connections(self):
- self.view.selectionModel().selectionChanged.connect(
- self.on_selection_change)
- def on_selection_change(self):
- view_index = self.view.selectionModel().selectedIndexes()[0]
- proxy_index = self.proxy.mapToSource(view_index)
- item_name = self.model.fileName(proxy_index)
- print item_name
- if __name__ == "__main__":
- try:
- win.close()
- win.deleteLater()
- except Exception:
- pass
- win = MyWindow()
- win.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement