2
问题在标题中。 没有函数QTableView :: set_Max_Number_SelectedItems(int)。QTableView - 限制选定项目的数量?
当选择的项目数为2时,我想禁用项目的选择。
感谢
问题在标题中。 没有函数QTableView :: set_Max_Number_SelectedItems(int)。QTableView - 限制选定项目的数量?
当选择的项目数为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个以上的项目,仅选择最后选择的+。我不知道你的任务的规格,所以选择最合适的方法。
谢谢切尔诺贝利,我用你的第二个解决方案,我用“lst.last()”替换了“lst.first()”。 它正是我所期待的。 但是,我想知道是否有任何特定的原因为什么没有这样的方法 作为QTableView :: set_Max_Number_SelectedItems(int).. – 2014-12-03 15:43:51
@ jp_doyon1 Qt是一个强大的工具,但它不能也不应该包含绝对一切。有时候我们应该搜索一下如何完成某项任务。 – Chernobyl 2014-12-03 15:47:28