crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в создание айтемов в QStandardItemModel для QTreeView
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 26.7.2008, 12:14
  Ну в дереве строки и являются элементами (items) дерева.
А иначе, что такое строки?
icore2008 Дата 26.7.2008, 12:05
  Вроде бы разобрался со вставкой строк и колонок в примере, приведенном Администратором из Книги М.Шлее.
При вставке строк в модель, например строк вставляются вроде бы только строки, но они ничем не заполнены на первый взгляд.
Цитата
bool QAbstractItemModel::insertRows ( int row, int count, const QModelIndex & parent = QModelIndex() ) [virtual]

Далее, в ассистанте идет объяснение:
Цитата
On models that support this, inserts count rows into the model before the given row. The items in the new row will be children of the item represented by the parent model index.

Именно слова выделенные жирным и подсказали мне, что при вставке новых рядов таки создаются айтемы! :-)

Поправьте, пожалуйста, если я неправ :-)
icore2008 Дата 24.7.2008, 15:00
  решение нашел в примере Simple Tree Model.
Вполне устраивает
icore2008 Дата 23.7.2008, 17:28
 
Цитата(Litkevich Yuriy @ 23.7.2008, 17:19) *
тебе надо разобратся как работате пример у Макса, и внужное тебе место вставлять елемент, ведь тыже хочешь его кудато конктретно воткнуть.
читал это: "Классы моделей"?

Читал, только на английском в ассистанте :)

хотел переопределить

Цитата
int QAbstractItemModel::rowCount ( const QModelIndex & parent = QModelIndex() ) const [pure virtual]


Но как?
Litkevich Yuriy Дата 23.7.2008, 17:19
  тебе надо разобратся как работате пример у Макса, и внужное тебе место вставлять елемент, ведь тыже хочешь его кудато конктретно воткнуть.
читал это: "Классы моделей"?
icore2008 Дата 23.7.2008, 17:12
 
Цитата(Litkevich Yuriy @ 23.7.2008, 17:07) *
если тебя смутило, то что число строк не меняется, то обрати внимание на исходную функцию:
Цитата
void QStandardItemModel::setItem ( int row, int column, QStandardItem * item )

...


т.е. "Если необходимо, то число строк и число колонок увеличивается, чтобы разместить элемент"


хорошо, но как я укажу int row, int column, куда нужно положить айтемы?
после построения модели (добавления рядов и колонок) число строчек не меняется
Проверял qDebug'ом
Litkevich Yuriy Дата 23.7.2008, 17:07
  если тебя смутило, то что число строк не меняется, то обрати внимание на исходную функцию:
Цитата
void QStandardItemModel::setItem ( int row, int column, QStandardItem * item )

Sets the item for the given row and column to item. The model takes ownership of the item. If necessary, the row count and column count are increased to fit the item. The previous item at the given location (if there was one) is deleted.

This function was introduced in Qt 4.2.

See also item().
void QStandardItemModel::setItem ( int row, QStandardItem * item )

This is an overloaded member function, provided for convenience.


т.е. "Если необходимо, то число строк и число колонок увеличивается, чтобы разместить элемент"
icore2008 Дата 23.7.2008, 16:58
 
Цитата(Litkevich Yuriy @ 23.7.2008, 16:53) *


подойдет, но только для добавления к основной модели, а мне нужно именно дочерние QStandardItem
Litkevich Yuriy Дата 23.7.2008, 16:53
  посмотри void QStandardItemModel::appendRow ( const QList<QStandardItem *> & items )
может подойдет
icore2008 Дата 23.7.2008, 16:35
  Интересует вот этот кусочек кода:

 model.insertRows(0, 4, index);
        model.insertColumns(0, 3, index);
        for (int nRow = 0; nRow < 4; ++nRow) {
            for (int nCol = 0; nCol < 3; ++nCol) {
                QString strPos = QString("%1,%2").arg(nRow).arg(nCol);
                model.setData(model.index(nRow, nCol, index), strPos);


Можно ли как-то положить во вновь создаваемые строки и колонки объекты типа QStandardItem?
пробовал

Цитата
void QStandardItemModel::setItem ( int row, int column, QStandardItem * item )


но тут нужно указывать ряд, куда вставлять, а в примере, приведенном Litkevich Yuriy, количество строк в модели, после добавления остаётся равным 5.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.2.2025, 2:50