Можно, например, определять индекс элемента в TreeView, на основе чего отображать нужные настройки.
Сейчас делаю так:
C++ (Qt)
connect(ui->treeView->selectionModel(),
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SLOT(updateItemEdit(QItemSelection)));
//......................
void MainWindow::updateItemEdit(const QItemSelection & itsel)
{
delete itemEditWidget;
itemEditWidget = ((SceneItem*)itsel.indexes().first().internalPointer())
->createSettingWidget(ui->itemEdit);
ui->itemEdit->layout()->addWidget(itemEditWidget);
}
Где createSettingWidget(ui->itemEdit); - виртуальный метод у каждого наследника SceneItem, который создаёт виджет с данным родителем.
Вы, я так понял, тоже самое имели в виду?
Но я собираючь отказываться от SceneItem'ов, так как модель это просто интерфейс между своей структурой данных и видом qt, а так как она сейчас реализована приходится выращивать отдельную иерархию для айтемов для модели параллельно с основной структурой и там приходится применять различные неуклюжие методы. Да и выглядит всё это очень громоздко... Если у меня до этого руки дойдут, то хочу избавится от этого "второго дерева" и получать этот виджет через саму модель (может использовать свою роль
) что посоветуете?