5

我将如何限制在 QTableWidget 中选择的行/列?我需要强制用户使用连续选择(已经完成)来准确选择两列和任意数量的行。

谢谢!

4

1 回答 1

3

您可能必须做以下两件事之一:

  1. 您必须子类QItemSelectionModel化并实现用于添加和删除选定QModelIndexes 的函数,以便您只向其中添加 2 行中的项目。
  2. 您可以通过自定义实现来捕获QItemSelectionModel发出的信号,例如:

    connect(tableWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection &, QItemSelection &)), selectionHandler, SLOT(updateSelection(QItemSelection &, QItemSelection &)));

selectionHandler是检查 中QModelIndex项目的行和列的对象,QItemSelection并删除您希望用户保留的行范围之外的所有索引,然后:

selectionHandler->ignoreSelectionUpdateSignal();
tableWidget->selectionModel()->select(QItemSelection&);
selectionHandler->acceptSelectionUpdateSignal();

并且您需要ignore确保accept您不会进入无限循环处理selectionChanged信号。

于 2011-12-29T02:51:54.750 回答