Qt QTreeView - возврат к предыдущему выбору, когда условие не выполнено - PullRequest
0 голосов
/ 25 августа 2011

При изменении выбора QTreeView я хотел бы вернуться к предыдущему выбору, если определенный условие не выполнено.

Например:

    void Editor::treeFolderSelected(QModelIndex const& index)
    {
        if(widget) {
            if(!widget->trySaveChanges()) {
                //revert to previous, validation failed
                return;
            }
        }

        //do normal behaviour

}

В настоящее время я не вижу прямого способа сделать это, поскольку QModelIndex не предоставляет никакой информации относительно того, что было выбрано ранее.

Есть ли у кого-нибудь предложения о том, как лучше всего это реализовать?

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Выбор вида имеет свою собственную модель QItemSelectionModel с сигналами, которые дают вам новый и предыдущий выбор.

0 голосов
/ 25 августа 2011
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;
   }
}
...