Select в дереве после layoutChanged



  • Всем привет!

    Есть моя модель(на основе QAbstractItemModel) и стандартная QSortFilterProxyModel на которую настроено дерево. Сортировка осуществляется по столбцу sortOrder из модели.

    myModel = new MyModel(this);
    proxyModel = new QSortFilterProxyModel;
    proxyModel->setDynamicSortFilter(true);
    proxyModel->setSourceModel(myModel);
    ui.treeView->setModel(proxyModel);
    ui.treeView->sortByColumn(2,Qt::AscendingOrder);

    Нужно поднять одну строку в дереве выше (поменять sortOrder местами у двух строк).

    void Widget::on_btnUp_clicked()
    {
    myModel->moveUp(proxyModel->mapToSource(ui.treeView->currentIndex()));
    }

    После этого куда-то пропадает выделение в дереве, как его вернуть?
    Код в модели метода подъёма:

    bool MyModel::moveUp( const QModelIndex& index )
    {
    Item* item = itemFromIndex(index);
    Item* parentItem = item->parentItem();
    Item* prevItem = parentItem->itemBySortOrder(item->sortOrder()-1);
    Q_ASSERT(prevItem);
    emit layoutAboutToBeChanged();
    // меняем местами
    parentItem ->swapItems(prevItem, item);
    emit layoutChanged();
    return true;
    }

    P.S.
    Элементы в дереве местами меняются


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.