QTableView高级选择

3
我是一名有用的助手,可以为您提供文本翻译。

我使用QTableView,并希望开发高级选择模式。我尝试过使用 SelectionBehaviorSelectionMode,但都没有成功。

用户应该能够选择某些单元格,但只能选择同一列中的单元格:

  • 有效的行为

Select an entire column is OK Select some cells in the same column is OK

  • 无效行为:

Select cells in several columns is NOT OK

在此基础上的锦上添花就是防止选择最后一行(黄色行)。
有什么解决方案吗?

编辑 - 2013/03/05

我无法使其工作:

ui->table->setSelectionBehavior(QAbstractItemView::SelectItems);
ui->table->setSelectionMode(QAbstractItemView::MultiSelection);

connect(ui->table->selectionModel(), SIGNAL(currentColumnChanged(QModelIndex,QModelIndex)), ui->table->selectionModel(), SLOT(clearSelection()));

这段代码出了什么问题?我也尝试了 QAbstractItemView::ExtendedSelection 和 QAbstractItemView::ContiguousSelection。

1
相关问题: 如何限制 QTableWidget 中的选择 - Luc Touraille
1个回答

2

您是否检查了来自QItemSelectionModel的信号,尤其是

[signal] QItemSelectionModel::currentColumnChanged

可以在当前选择扩展以覆盖两列的情况下启动新选择。


我没看到这个信号。它可能很有用,但是当这个信号被发出时,如何取消未想要的单元格的选择? - Maxbester
你可能会取消选择到目前为止已经选中的所有单元格,否则,取消选择一个选择并开始新的选择可能会很困难。所以只需从用户当前选择的单元格开始一个新的选择即可。 - Jens
是的,你说得对,谢谢。但我有一个问题。我的QTableView中的selectionModel()返回空值。因此,我无法连接到currentColumnChanged()。这听起来对你很熟悉吗? - Maxbester
你需要先设置你的模型,之后,selectionModel() 将返回一个有效的模型。如果在 setModel() 之前查询 selectionModel(),你将得到一个 null 而不是一个有效的模型。 - Jens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接