Russian Qt Forum

Qt => Базы данных => Тема начата: Jeka38irk от Октябрь 11, 2011, 10:06



Название: QTreeView + база данных
Отправлено: Jeka38irk от Октябрь 11, 2011, 10:06
Доброго времени суток!!! :)
есть:
Код:
 QSqlQuery query,districts;
    query.exec("SELECT id,code,name FROM base where pid is null" );

    QStandardItemModel *model = new QStandardItemModel(this);
    QStandardItem *parentItem = model->invisibleRootItem();

    while (query.next()){
        QStandardItem *item = new QStandardItem(QString("%0").arg(query.value(1).toString()+" - "+query.value(2).toString()));
                        parentItem->appendRow(item);
                        item->appendRow(QStandardItem::setText(" "));

                        districts.prepare("SELECT code,name FROM base where pid = "+query.value(0).toString() );
                        districts.bindValue(1, query.value(0).toString());
                        while(districts.next()){
                                                QStandardItem *itemchild = new QStandardItem(QString("%0").arg(districts.value(0).toString()+" - "+districts.value(1).toString()));
                                                item->appendRow(itemchild);

                              }


    }
    QTreeView *view = new QTreeView(ui->comboBox_3);
    view->setModel(model);
все стоит как надо только  очень долго когда в базе 14 т. записей.
Есть идея
сначала построить  item
к примеру:
+ item1
+ item2
+ item3
а itemchild строить при нажатие на item
- item1
      | 
 


Название: Re: QTreeView + база данных
Отправлено: Jeka38irk от Октябрь 11, 2011, 10:08
 |
  - itemchild1
 |
  -itemchild2

как это сделать???


Название: Re: QTreeView + база данных
Отправлено: JayFOX от Октябрь 11, 2011, 10:57
Какая СУБД? Когда я такое делал, я писал рекурсивный запрос чтобы вычислить глубину детишек, сортировал по глубине и за один проход по запросу строил дерево. Но нужно ли грузить сразу 14к записей?