在QTreeView选择更改时,我想恢复到之前的选择,如果确定的话 条件不符合。
例如:
void Editor::treeFolderSelected(QModelIndex const& index)
{
if(widget) {
if(!widget->trySaveChanges()) {
//revert to previous, validation failed
return;
}
}
//do normal behaviour
}
目前我没有看到直接的方法,因为QModelIndex
没有提供有关之前选择的内容的任何信息。
有没有人对实施此方法的最佳方法有任何建议?
答案 0 :(得分:0)
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;
}
}
答案 1 :(得分:0)
视图选择有自己的模型QItemSelectionModel
,其中的信号可以为您提供新的和之前的选择。