Qt QTreeView - 当条件不符合时恢复到之前的选择
问题描述:
在QTreeView选择更改上,如果某个 条件未得到满足,我想恢复到之前的选择。Qt QTreeView - 当条件不符合时恢复到之前的选择
例如:
void Editor::treeFolderSelected(QModelIndex const& index)
{
if(widget) {
if(!widget->trySaveChanges()) {
//revert to previous, validation failed
return;
}
}
//do normal behaviour
}
目前我没有看到直接的方式做到这一点,因为QModelIndex
没有提供关于什么是以前选择的任何信息。
有没有人有任何建议的最佳方式来实现呢?
答
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;
}
}