QTableView - 限制所选项目的数量?

时间:2014-12-03 13:07:00

标签: qt qtableview

问题出在标题中。 没有函数QTableView :: set_Max_Number_SelectedItems(int)。

当所选项目数为2时,我想禁用项目选择。

由于

1 个答案:

答案 0 :(得分:2)

您可以使用以下功能禁用选择:

connect(ui->tableView->selectionModel(),&QItemSelectionModel::selectionChanged,[=]() {//with lambda
    if(ui->tableView->selectionModel()->selectedIndexes().size() > 1)
        ui->tableView->setSelectionMode(QAbstractItemView::NoSelection);
});

我在这里使用C++11CONFIG += c++11.pro文件)和new syntax of signals and slots,但当然如果需要,您可以使用旧语法。

但在这种情况下,此用户将无法使用选择。如果这是你想要的,那就没事了。如果不是,那么您可以启用选择,例如tableView失去焦点或为此提供特殊按钮。

但我也认为下一段代码更适合你:

connect(ui->tableView->selectionModel(),&QItemSelectionModel::selectionChanged,[=]() {//with lambda
    if(ui->tableView->selectionModel()->selectedIndexes().size() > 2)
    {
        QList<QModelIndex> lst = ui->tableView->selectionModel()->selectedIndexes();
        ui->tableView->selectionModel()->select(lst.first(),QItemSelectionModel::Deselect);
    }
});

它做什么?当用户尝试选择2个以上的项目时,最后选择的项目取消选择,用户根本不能选择2个以上的项目,只能选择最后一个+当前选择的项目。我不知道你的任务的规格,所以选择最合适的方法。