必须在QTableWidget中为自定义选择重新实现哪个类?

时间:2014-04-02 16:47:57

标签: qt qtgui qt4.8

QTableWidget由几个Selection Modi组成,可以使用方法

进行选择
setSelectionMode (QAbstractItemView::SelectionMode mode)

给定的modi都不符合我想要的交互选择类型。我想实现一种选择模式,当用户在一个表格单元格中单击,然后在另一个表格单元格中移动+单击时,结果选择不是这两者之间的列和行的总和,而是从第一个单击的单元格开始,沿着读取方向逐行进入,以第二次单击结束。我希望我明确表达我想做的事情。

我是否需要覆盖QItemSelectionModel或QTableWidget? 用户点击选择的位置在哪里处理?

1 个答案:

答案 0 :(得分:2)

您需要创建QItemSelectionModel的后代并重新实现select

virtual void select(const QModelIndex & index, QItemSelectionModel::SelectionFlags command)
virtual void select(const QItemSelection & selection, QItemSelectionModel::SelectionFlags command)

重新实现select时,您可以使用不同的参数调用QItemSelectionModel::select以获得所需的结果。

然后使用QTableWidget将选择模型的实例分配给setItemSelectionModel