问题出在标题中。 没有函数QTableView :: set_Max_Number_SelectedItems(int)。
当所选项目数为2时,我想禁用项目选择。
由于
答案 0 :(得分:2)
您可以使用以下功能禁用选择:
connect(ui->tableView->selectionModel(),&QItemSelectionModel::selectionChanged,[=]() {//with lambda
if(ui->tableView->selectionModel()->selectedIndexes().size() > 1)
ui->tableView->setSelectionMode(QAbstractItemView::NoSelection);
});
我在这里使用C++11
(CONFIG += 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个以上的项目,只能选择最后一个+当前选择的项目。我不知道你的任务的规格,所以选择最合适的方法。