Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PySide import QtGui
- from PySide import QtCore
- class SpinBoxDelegate(QtGui.QItemDelegate):
- def __init__(self, parent=None):
- super(SpinBoxDelegate, self).__init__(parent)
- def createEditor(self, parent, option, index):
- editor = QtGui.QSpinBox(parent)
- editor.setMinimum(0)
- editor.setMaximum(100)
- editor.installEventFilter(self)
- return editor
- def setEditorData(self, spinBox, index):
- value = index.model().data(index, QtCore.Qt.DisplayPropertyRole)
- spinBox.setValue(value)
- def setModelData(self, spinBox, model, index):
- spinBox.interpretText()
- value = spinBox.value()
- model.setData(index, data)
- def updateEditorGeometry(self, editor, option, index):
- editor.setGeometry(option.rect)
- class ToDoProxyModel(QtGui.QSortFilterProxyModel):
- '''Proxy Model for filtering and sorting - not yet in use'''
- def __init__(self, parent=None):
- super(ToDoProxyModel, self).__init__(parent)
- class ToDoPanel(QtGui.QWidget):
- '''Panel to create and manage a to-do list'''
- def __init__(self, parent=None):
- super(ToDoPanel, self).__init__(parent)
- self.setupModel()
- self.buildUI()
- self.connectSignalsWithSlots()
- # ADD THE FIRST TASK
- self.addTask()
- def setupModel(self):
- #self.STATUSROLE = QtCore.Qt.UserRole + 1
- #self.PRIORITYROLE = QtCore.Qt.UserRole + 2
- self.model = QtGui.QStandardItemModel()
- def buildUI(self):
- ## LAYOUT
- layout = QtGui.QVBoxLayout()
- self.setLayout(layout)
- ## TOOL BAR
- toolLayout = QtGui.QHBoxLayout()
- self.addButton = QtGui.QPushButton('add task')
- toolLayout.addWidget(self.addButton)
- ## TABLE VIEW
- tableView = QtGui.QTableView()
- tableView.setModel(self.model)
- tableView.setSortingEnabled(True)
- tableView.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
- priorityDelegate = SpinBoxDelegate()
- tableView.setItemDelegate(priorityDelegate)
- ## CREATE UI
- layout.addLayout(toolLayout)
- layout.addWidget(tableView)
- def addTask(self):
- row = self.model.rowCount()
- newTitle = QtGui.QStandardItem('new task')
- newPriority = QtGui.QStandardItem(1)
- newStatus = QtGui.QStandardItem(False)
- self.model.setItem(row, 0, newTitle)
- self.model.setItem(row, 1, newPriority) # NEEDS SPIN BOX
- self.model.setItem(row, 2, newStatus) # NEEDS CHECKBOX
- def connectSignalsWithSlots(self):
- self.addButton.clicked.connect(self.addTask)
- if __name__ == '__main__':
- import sys
- app = QtGui.QApplication([])
- w = ToDoPanel()
- w.resize(400, 200)
- w.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement