Russian Qt Forum

Qt => Model-View (MV) => Тема начата: EhTemka от Май 28, 2007, 21:04



Название: QStandardItemModel и QTreeView?
Отправлено: EhTemka от Май 28, 2007, 21:04
Привет !

   Что-то никак не пойму как соединить QStandardItemModel и QTreeView.
Чёртова жара :shock:

    Подскажите пожалуйста.


Название: QStandardItemModel и QTreeView?
Отправлено: SABROG от Май 28, 2007, 21:42
Примеров же докучи. метод setModel используй для экземпляра QTreeView. Чтобы работать с элементами используй уже везде свой указатель на QStandardItemModel и заполняй ее QStandardItem'ами. Чтобы добавить ребенка к родительскому узлу, берешь свой экземпляр QStandardItem и вызываешь в нем метод insertRow. Это добавит строки именно к твоему родителю. Если QTreeView многоколончатый (о сказал то!), то вместо insertRow используешь setChild с указанием конкретной колонки.


Название: QStandardItemModel и QTreeView?
Отправлено: EhTemka от Май 28, 2007, 22:45
Вот пишу такой код

Код:
viewTest_ = new QTreeView(this);
model_ = new GuiModelTree(viewTest_);  // от QStandardItemModel
model_->setDataModel();
viewTest_->setModel(model_);


    и что-то ничего не показывает...

добавлено спустя 6 минут:

 вот setDataModel()

Код:
void GuiModelTree::setDataModel()
{
     for (int i = 0; i < 10; ++i) {
        int countRow = rowCount();
        if (countRow == 0) {
            insertRows(countRow, 1);
        } else {
            QModelIndex ind = index(countRow - 1, 0);
            insertRows(countRow, 1, ind);
        }
        QModelIndex ind = index(countRow, 0);
        setData(ind, true, Qt::DisplayRole);                                            
    }
}


не пойму что не так :cry:


Название: QStandardItemModel и QTreeView?
Отправлено: Вячеслав от Май 28, 2007, 23:07
А чего хочеться-то ?

RTFM ;)
Код:

An example usage of QStandardItemModel to create a table:
 QStandardItemModel model(4, 4);
 for (int row = 0; row < 4; ++row) {
     for (int column = 0; column < 4; ++column) {
         QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column));
         model.setItem(row, column, item);
     }
 }

и
Код:

An example usage of QStandardItemModel to create a tree:
 QStandardItemModel model;
 QStandardItem *parentItem = model.invisibleRootItem();
 for (int i = 0; i < 4; ++i) {
     QStandardItem *item = new QStandardItem(QString("item %0").arg(i));
     parentItem->appendRow(item);
     parentItem = item;
 }



работают в лоб ;) Ы ?

добавлено спустя 2 минуты:

  А вообще-то текст у тебя хде ? Строки ты создал, а элементы ?


Название: QStandardItemModel и QTreeView?
Отправлено: EhTemka от Май 28, 2007, 23:23
элементы:
  QModelIndex ind = index(countRow, 0);
   setData(ind, true, Qt::DisplayRole);

  Я может чего-то не доганяю. У меня Qt 4.1.4

  Я пользуюсь QModelIndex-ами, Ни каких QStandardItem-мов нихде не нахожу. Но вообще вопрос не в том. Как создать модель QStandardItemModel понятно. Не понятно как дерево сделать

Метод  insertRows ( int row, int count, const QModelIndex & parent = QModelIndex() ) при назначении парента возвращает false... и никак


Название: QStandardItemModel и QTreeView?
Отправлено: Вячеслав от Май 28, 2007, 23:35
Да это с 4.2.0 проявилось ;) Но про версию никто не говорил ;)
Код:

An example usage of QStandardItemModel to create a tree:
        QStandardItemModel *model = new QStandardItemModel();
        QModelIndex parent;
        for (int i = 0; i < 4; ++i) {
            parent = model->index(0, 0, parent);
            model->insertRows(0, 1, parent);
            model->insertColumns(0, 1, parent);
            QModelIndex index = model->index(0, 0, parent);
            model->setData(index, i);
        }

это из 4.1.4
Заметь , тут колонки тож добавляються ... Не оно ?


Название: QStandardItemModel и QTreeView?
Отправлено: EhTemka от Май 28, 2007, 23:39
Усё разобрался... тупил по страшному. Сорри

Это всё жара... :shock:

добавлено спустя 1 минуту:

 спасиб!!!