0

我有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_()
4

2 回答 2

0

将 PySide 更新到最新版本可以解决此问题。

于 2013-07-15T01:24:09.130 回答
0

似乎默认的组合框委托搞乱了它接收到的数据。您可以使用自定义委托来修复它以绘制正确的数据。但是既然你已经解决了,那么恭喜你!

于 2013-07-21T15:24:04.213 回答