我有一张表QStyledItemDelegate
。在一个单元格中,我通过代理人QComboBox
创建了createEditor
。我通过combobox
向self.addItem("an item");
列表中添加了一些项目,但是当我进入表格并实际选择我添加的项目时,它们会被从0开始的索引值替换。
如何让QComboBox
显示我在addItem
中添加的实际文字,而不是他们存储的索引?
以下是我的问题的一个小例子:
import sys
from PySide import QtCore, QtGui, QtSql
class EditDelegate(QtGui.QStyledItemDelegate):
def __init__(self, parent=None):
super(EditDelegate, self).__init__(parent)
def createEditor(self, parent, option, index):
editor = TheEditor(parent)
return editor
class TheEditor(QtGui.QComboBox):
def __init__(self, parent=None):
super(TheEditor, self).__init__(parent)
self.addItem("Item 1")
self.addItem("Item 2")
self.addItem("Item 3")
self.setEditable(True)
class TheTable(QtGui.QTableWidget):
def __init__(self, columns, parent=None):
super(TheTable, self).__init__(parent)
self.setItemDelegate(EditDelegate())
self.setEditTriggers(QtGui.QAbstractItemView.AllEditTriggers)
self.setColumnCount(1)
self.setRowCount(1)
self.setHorizontalHeaderLabels(["QCombo"])
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setCentralWidget(TheTable(self))
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
frame = MainWindow()
frame.show()
app.exec_()
答案 0 :(得分:0)
将PySide更新到最新版本可以解决问题。
答案 1 :(得分:0)
似乎默认的组合代理正在搞乱它收到的数据。你可以用自定义委托修复它以绘制正确的数据。但既然你已经解决了它,恭喜!。