Вопрос в заголовке. Нет функции 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);
}
});
Что она делает? Когда пользователь пытается выбрать более двух элементов, последний выбранный элемент отменяется, и пользователь не может выбрать более двух элементов, только последний выбранный или выбранный в данный момент. Я не знаю спецификации вашей задачи, поэтому выберите наиболее подходящий подход.
Спасибо, Чернобыль, я использовал ваше второе решение, где я заменил «lst.first()» на «lst.last()». Он делает именно то, что я искал. Тем не менее, мне интересно, нет ли какой-либо конкретной причины, почему нет такого метода как QTableView :: set_Max_Number_SelectedItems (int) .. –
@ jp_doyon1 Qt - мощный инструмент, но он не может и не должен содержать абсолютно все. Иногда мы должны искать способ выполнения какой-либо задачи. – Chernobyl