我有一个QTableView,其数据加载了形式为
的QStandardItemModelParameter Value
X1 0.456
X2 0.123
.... and so on.
现在我必须设置Tab Order属性,使我只能遍历值而不是参数。即当控件在0.456上时,如果我按'Tab'键,它必须转到0.123而不是X2(默认行为)。此外,列参数禁用了Edt触发器,我只能更改值。
我知道QWidget :: setTabOrder(QWidget *,QWidget *),但由于我通过QStandardItemModel设置数据,如何在QTableView中实现所需的Tab顺序?我使用的是Qt 4.4和Windows XP。另外,我没有使用Qt设计器来设计UI元素。一切都只通过代码。
答案 0 :(得分:2)
子类QTableView并覆盖keyPressEvent。检查事件中的tab键,否则调用基本实现。从视图的selectionmodel中获取当前选定的索引。将视图的edittrigger设置为CurrentChanged,或者将您自己的QItemDelegate设置为手动控制。
答案 1 :(得分:2)
实际上,在编辑时不会发出keyPressEvent,而是必须重新实现closeEditor并检查提示。如果提示是QAbstractItemDelegate :: EditNextItem,则更改selectionModel :: currentIndex并使用QTableView :: edit。
另一种解决方案只适用于你没有编辑的情况,但无论如何它给了我一个起点,所以我给了它赏金