有一个QTableView(),其中一列填充了QComboBoxes。问题是如何QTableView()根据字典中的数据选择组合框中的项目
我知道我应该申请,self.combo.setCurrentIndex(self.combo.findText( status_str))但无法理解如何将该变量status_str放入comboBox或放置在代码中应用它的位置。我也无法理解 makecomboBox只有在双击后才会出现。如果没有双击单元格,它必须看起来像任何其他单元格。
代码示例:
data = {"first":{"status":"closed"},"second":{"status":"expired"},"third":{ "status":"cancelled"}}
class ComboDelegate(QItemDelegate):
def __init__(self, parent):
QItemDelegate.__init__(self, parent)
def paint(self, painter, option, index):
self.combo = QComboBox(self.parent())
li = []
li.append("closed")
li.append("expired")
li.append("cancelled")
li.append("waiting")
self.combo.addItems(li)
#self.combo.setCurrentIndex(self.combo.findText( status_str ))
if not self.parent().indexWidget(index):
self.parent().setIndexWidget( index, self.combo )
class TableView(QTableView):
def __init__(self, *args, **kwargs):
QTableView.__init__(self, *args, **kwargs)
self.setItemDelegateForColumn(1, ComboDelegate(self))
class MainFrame(QWidget):
def __init__(self):
QWidget.__init__(self)
table = TableView(self)
self.model = QStandardItemModel()
table.setModel(self.model)
MainWindow …Run Code Online (Sandbox Code Playgroud)