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

谢谢!

最佳答案

您可能需要执行以下两项操作之一:

  • 您必须继承QItemSelectionModel的子类,并实现用于添加和删除所选QModelIndex es的函数,以便仅向其中添加2行的项目。
  • 您可以通过使用自定义实现来捕获QItemSelectionModel发出的信号来实现此目的,例如:
    connect(tableWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection &, QItemSelection &)), selectionHandler, SLOT(updateSelection(QItemSelection &, QItemSelection &)));
  • selectionHandler是一个对象,它检查QModelIndexQItemSelection项的行和列,并删除您希望用户保留的行范围之外的所有索引,然后执行以下操作:
    selectionHandler->ignoreSelectionUpdateSignal();
    tableWidget->selectionModel()->select(QItemSelection&);
    selectionHandler->acceptSelectionUpdateSignal();
    

    您需要确定ignoreaccept,以确保您不会陷入处理selectionChanged信号的无限循环中。

    关于c++ - 如何限制QTableWidget中的选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8658656/

    10-13 07:05