2013-07-14 65 views
0

我有一個表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_() 
+0

無法重現。使用'PyQt4'我總是在組合框和表格中的單元格中看到「Item 1/2/3」文本。你能提供你所看到的圖像嗎? (編輯:我剛剛安裝了PySide,並得到與PyQt4相同的結果)。 – Bakuriu

+0

你是對的,事實證明,這是我使用的PySide版本的一些問題:v1.1.2。我剛剛升級到最新的v1.2.0,這個問題不再發生。謝謝! –

回答

0

更新PySide到最新版本解決問題。

0

看來,默認的組合框代表搞砸了它收到的數據。你可以用一個自定義委託來修復它以繪製正確的數據。但是既然你已經解決了,祝賀你!

相關問題