如何限制QTableWidget中的选择

Sam*_*erg 5 c++ qt qtablewidget

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

谢谢!

Kar*_*son 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();
Run Code Online (Sandbox Code Playgroud)

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