Qt QTreeView - возврат к предыдущему выбору, когда условие не выполнено
При изменении выбора QTreeView я хотел бы вернуться к предыдущему выбору, если определенное условие не выполняется.
Например:
void Editor::treeFolderSelected(QModelIndex const& index)
{
if(widget) {
if(!widget->trySaveChanges()) {
//revert to previous, validation failed
return;
}
}
//do normal behaviour
}
В настоящее время я не вижу прямого способа сделать это, так как QModelIndex
не предоставляет никакой информации относительно того, что было выбрано ранее.
У кого-нибудь есть какие-либо предложения по наилучшему способу реализации этого?
2 ответа
int lastSelection = -1;
bool abortEvent = false;
void Editor::treeFolderSelected(QModelIndex const& index)
{
if (abortEvent) {
abortEvent = false;
return;
}
if(widget) {
if(!widget->trySaveChanges()) {
if (lastSelection != -1) {
abortEvent = true;
select(lastSelection);
}
return;
}
lastSelection = index;
}
}
Выбор вида имеет свою собственную модель, QItemSelectionModel
, с сигналами, которые дают вам новый и предыдущий выбор.