Qt - QTreeView i QSettings

0

Witam
Potrzebuję zapisać ustawienia QTreeView ale nie potrafię iteracyjnie przejść po elementach QTreeView i sprawdzić czy są isExpanded();
Prosiłbym was o pomoc.

Może trochę kodu:

    //------Menu-------------------------
    standardModel = new QStandardItemModel(this);
    QStandardItem *rootNode = standardModel->invisibleRootItem();

    //------Administracja-------------------------
    QStandardItem *ustawieniaItem   = new QStandardItem(QIcon(":/images/images/ustawienia.png"),"Ustawienia");
    QStandardItem *ustKartotekiItem      = new QStandardItem(QIcon(":/images/images/ustawienia.png"),"Kartoteki");
    rootNode->     appendRow(ustawieniaItem);
    ustawieniaItem->appendRow(ustKartotekiItem);

    //------Kartoteki-------------------------
    QStandardItem *kartotekiItem   = new QStandardItem(QIcon(":/images/images/kartoteka.png"),"Kartoteki");
    QStandardItem *pracownicyItem  = new QStandardItem(QIcon(":/images/images/kartoteka.png"),"Pracownicy");
    QStandardItem *szkolyItem      = new QStandardItem(QIcon(":/images/images/kartoteka.png"),"Szkoły");
    QStandardItem *uczniowieItem   = new QStandardItem(QIcon(":/images/images/kartoteka.png"),"Uczniowie");
    rootNode->     appendRow(kartotekiItem);
    kartotekiItem->appendRow(pracownicyItem);
    kartotekiItem->appendRow(szkolyItem);
    kartotekiItem->appendRow(uczniowieItem);

    ui->treeView->setModel(standardModel);

Pozdrawiam

1

Oto co ci się przyda:
QStandardItemModel::item(int row,int column) da ci QStandardItem,a ten ma funkcję index() która zwróci ci QModelIndex potrzebny dla isExpanded()

0

Dziękuję za pomoc !
Dla potomnych:

void MainWindow::writeSettings()
 {
    QSettings settings("Dziennik","Dziennik");
    settings.beginGroup("mainwindow");
    settings.setValue("geometry",saveGeometry());
    settings.setValue("savestate",saveState() );
    settings.setValue("maximized",isMaximized());
    if (!isMaximized()) {
        settings.setValue("pos",pos());
        settings.setValue("size",size());
    }
    settings.setValue("splitter",ui->splitter->saveState());
    QStringList List;
    for (int r = 0; r < ui->treeView->model()->rowCount(); ++r)  {
        for (int c = 0; c < ui->treeView->model()->columnCount(); ++c) {
             QModelIndex node = ui->treeView->model()->index(r,c);

             if (ui->treeView->isExpanded(node))
             {
                 List << node.data(Qt::DisplayRole).toString();
             }
        }
    }
    settings.setValue("ExpandedItems", QVariant::fromValue(List));
    settings.endGroup();
}

void MainWindow::readSettings()
{
    QSettings settings("Dziennik","Dziennik");
    settings.beginGroup("mainwindow");
    restoreGeometry(settings.value("geometry",saveGeometry()).toByteArray());
    restoreState(settings.value("savestate",saveState() ).toByteArray());
    move(settings.value("pos", pos()).toPoint());
    resize(settings.value("size",size() ).toSize());
    if (settings.value("maximized",isMaximized()).toBool())
        showMaximized();
    ui->splitter->restoreState(settings.value("splitter").toByteArray());
    QStringList List;
    List = settings.value("ExpandedItems").toStringList();
    foreach (QString item, List)
    {
        QModelIndexList Items = ui->treeView->model()->match(ui->treeView->model()->index(0, 0), Qt::DisplayRole, QVariant::fromValue(item));
        if (!Items.isEmpty())
        {
            ui->treeView->setExpanded(Items.first(), true);
        }
    }
    settings.endGroup();
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1