【发布时间】:2010-08-25 17:00:02
【问题描述】:
所以我有一个模型,其中一列包含一个国家/地区。但是,因为我想显示一个组合框来从选项列表中选择国家,所以我不直接将国家名称存储在模型中。相反,我将索引值存储到允许的国家列表中。这允许我按照 Qt 文档中的建议在我的表单视图中使用QComboBox。问题是我也有一个表格视图,表格视图显示索引整数,而不是国家名称。我已经设置了QStyledItemDelegate 并实现了createEditor,所以如果你点击世界单元格,它会弹出ComboBox,但是当你不编辑国家时,你会看到索引值。
我正在寻求解决方案。我已经实现了一种绘制方法来完成这项工作,但它显示的是偏移到它的正确位置的值,我不知道如何让它正确显示。我认为render方法中的option.rect.topLeft()是错误的,但是我无法弄清楚如何正确设置绘图。
def paint(self, painter, option, index):
if index.column() == COUNTRY:
painter.save()
countryRef, ok = inex.data().toInt()
countryStr = country_list[countryRef]
widget = QLineEdit()
widget.setGeometry(option.rect)
widget.setText(countryStr)
widget.render(painter, option.rect.topLeft())
painter.store()
else:
QStylyedItemDelegate.paint(self, painter, option, index)
【问题讨论】: