我有一個表QStyledItemDelegate
。在一個單元格中,我有一個QComboBox
,通過代理的createEditor
創建。我通過self.addItem("an item");
添加一些項目到combobox
上市然而,當我去到表中,實際選擇我加入的項目,他們得到與指數值從0QStyledItemDelegate與QComboBox:顯示索引而不是文本
開始取代我怎麼能有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_()
無法重現。使用'PyQt4'我總是在組合框和表格中的單元格中看到「Item 1/2/3」文本。你能提供你所看到的圖像嗎? (編輯:我剛剛安裝了PySide,並得到與PyQt4相同的結果)。 – Bakuriu
你是對的,事實證明,這是我使用的PySide版本的一些問題:v1.1.2。我剛剛升級到最新的v1.2.0,這個問題不再發生。謝謝! –