小编Ser*_*ele的帖子

如何在 QTableView 中恢复 QComboBox 委托的索引?

有一个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)

python qt model pyqt qcombobox

2
推荐指数
1
解决办法
1092
查看次数

标签 统计

model ×1

pyqt ×1

python ×1

qcombobox ×1

qt ×1