16,215
社区成员
发帖
与我相关
我的任务
分享
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class Delegate(QItemDelegate):
def __init__(self, owner):
super(Delegate, self).__init__(owner)
# self.items = items
def createEditor(self, parent, option, index):
editor = QCheckBox(parent)
return editor
def setEditorData(self, editor, index):
v = index.data()
def setModelData(self, editor, model, index):
if editor.isChecked():
v = 'Yes'
else:
v = 'No'
model.setData(index, v)
class Main(QMainWindow):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.model = QStandardItemModel()
self.table = QTableView()
self.table.setEditTriggers(QAbstractItemView.CurrentChanged | QAbstractItemView.SelectedClicked )
self.table.setFocusPolicy(Qt.NoFocus)
self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
self.table.setSelectionMode(QAbstractItemView.ExtendedSelection)
self.table.setModel(self.model)
self.model.setItem(0,0,QStandardItem('AAAA'))
self.model.setItem(0,1,QStandardItem( ''))
self.model.setItem(1,0,QStandardItem('BBBB'))
self.model.setItem(1,1,QStandardItem(''))
self.table.setItemDelegateForColumn(1, Delegate(self))
self.setCentralWidget(self.table)
self.setWindowTitle('Delegate Test')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = Main()
app.exec_()
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class Delegate(QItemDelegate):
def __init__(self, owner):
super(Delegate, self).__init__(owner)
# self.items = items
def createEditor(self, parent, option, index):
editor = QCheckBox(parent)
return editor
def setEditorData(self, editor, index):
model = index.model()
value = model.item(index.row(), 1).icon()
def setModelData(self, editor, model, index):
model = index.model()
if editor.isChecked():
value = QIcon("./favorite.png")
else:
value = QIcon("./unfavorite.png")
model.setItem(index.row(), 1, QStandardItem(value, ''))
def updateEditorGeometry(self, editor, option, index):
newRect = option.rect
newRect.setX(newRect.x() + 33)
newRect.setY(newRect.y() + 9)
editor.setGeometry(newRect)
class Main(QMainWindow):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.model = QStandardItemModel()
self.table = QTableView()
self.table.setEditTriggers(QAbstractItemView.CurrentChanged | QAbstractItemView.SelectedClicked )
self.table.setFocusPolicy(Qt.NoFocus)
self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
self.table.setSelectionMode(QAbstractItemView.ExtendedSelection)
self.table.setModel(self.model)
self.model.setItem(0,0,QStandardItem('AAAA'))
self.model.setItem(0,1,QStandardItem( ''))
self.model.setItem(1,0,QStandardItem('BBBB'))
self.model.setItem(1,1,QStandardItem(''))
self.table.setItemDelegateForColumn(1, Delegate(self))
self.setCentralWidget(self.table)
self.setWindowTitle('Delegate Test')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = Main()
app.exec_()
def setModelData(self, editor, model, index):
value = index.data().toString()
icon = editor.icon()
if editor.isChecked():
value = 'true'
icon = QIcon(":/favorite.png")
else:
value = 'false'
icon = QIcon(":/unfavorite.png")
model.setData(index, value, Qt.DisplayRole)
model.setData(index, icon, Qt.DecorationRole)