阿罗哈
我有一个QTableWidget,其中有两列当前正在使用ComboboxDelegate(我的QItemDelegate的子类)来向用户显示选项。我希望第一列中的选项能够影响第二列中可用的选项,仅适用于当前行。
例如,第一列中有车辆列表,第二列中有可用于该车辆的颜色列表。其他行可以选择不同的汽车,因此可以选择不同的颜色。
从我所看到的,我只能为每行或每列设置一个项目委托,所以我看不到如何更改第二列委托中的选项而不影响所有其他行。
这可能吗?我真的很想避免进入全视图/模型分离,因为我已经有很多代码看着这个QTableWidget(而且我的时间压力很小)
答案 0 :(得分:0)
对那些感兴趣的人;我回到了我的预委托方法,即使用QTableWidget :: setItemWidget()为每个单元格提供一个组合框小部件。
我将qcombobox子类化为对表的引用,并将组合框CurrentIndexChanged与一个插槽连接以更新表数据。 (在单元格中设置窗口小部件不会影响tablewidget数据,除非您这样做。)
使用像这样的完整组合框比itemdelegate更昂贵,但我的桌子很小,所以我可以侥幸逃脱。组合框的渲染不如委托一样好(组合框始终可见,而不是仅在委托的情况下编辑),但随着时间的推移,我确信我可以改进这一点。