在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;
}
}
视图选择有它自己的模型,QItemSelectionModel
,用信号给你新的和以前的选择。