1

阿罗哈

我有一个带有两列的 QTableWidget,它们当前使用 ComboboxDelegate(我的 QItemDelegate 的子类)向用户呈现选项。我希望第一列中的选择影响第二列中可用的选项,仅适用于当前行。

例如,第一列有汽车列表,第二列有该汽车可用的颜色列表。其他行选择不同的汽车,因此可以选择不同的颜色。

据我所知,我只能为每行或每列设置一个项目委托,所以我看不到如何在不影响所有其他行的情况下更改第二列委托中的选项。

这可能吗?我真的很想避免进行完整的视图/模型分离,因为我已经有很多代码在查看这个 QTableWidget(而且我面临时间压力)

4

1 回答 1

0

适合那些感兴趣的人;我回到了我的预委托方法,即使用 QTableWidget::setItemWidget() 为每个单元格提供一个组合框小部件。

我将 qcombobox 子类化以引用表,并将组合框 CurrentIndexChanged 与插槽连接以更新表数据。(除非您这样做,否则在单元格中设置小部件不会影响 tablewidget 数据)。

使用像这样的完整组合框比 itemdelegate 更昂贵,但我的表非常小,所以我可以不用它。组合框的渲染不如委托(组合框始终可见,而不是仅在委托的编辑期间可见),但随着时间的推移,我确信我可以改进这一点。

于 2013-10-10T14:24:24.853 回答