Russian Qt Forum

Qt => Model-View (MV) => Тема начата: explorer.85 от Август 02, 2011, 14:56



Название: Из TreeModel через ProxyModel в TableView
Отправлено: explorer.85 от Август 02, 2011, 14:56
Как преобразовать через прокси иерархическую модель из двух уровней в модель списка которая  содержит все элементы из нижнего уровня иерархической модели?


Название: Re: Из TreeModel через ProxyModel в TableView
Отправлено: Kunashir от Август 18, 2011, 15:18
Для этого нужна еще одна прокси модель для QTableView:

ну вот так у меня это реализовано:
Код:
treeProxyModel = new QSortFilterProxyModel (this);
    treeProxyModel->setSourceModel(&model);
    treeProxyModel->setFilterRole(Qt::DisplayRole);
    treeProxyModel->setFilterKeyColumn(4);
    treeProxyModel->setFilterFixedString("group");

    tableProxyModel = new QSortFilterProxyModel (this);
    tableProxyModel->setSourceModel(&model);

При клике по дереву надо будет определить индекс исходной модели и установить его в качестве текущего для прокси-модели QTableView;

Код:
connect (ui->treeView, SIGNAL (clicked (const QModelIndex &)), this,
              SLOT (groupChanged(const QModelIndex &)) );
.....

void MainWindow::groupChanged(const QModelIndex &index)
{
   if (!ui->checkBox->isChecked())
    {
       QModelIndex i = treeProxyModel->mapToSource(index);
       QModelIndex j = tableProxyModel->mapFromSource(i);
       ui->tableView->setRootIndex(j);
 
    }

}

Вроде бы все. Изначально пример взят из книги "Qt4 на примерах" Юрий Земсков.


Название: Re: Из TreeModel через ProxyModel в TableView
Отправлено: kolob от Январь 07, 2013, 16:42
А реально сделать так чтобы в QTableView можно было бы отображать иерархическую модель?