crossplatform.ru

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

> QAbstractItemView, или внутренности Qt
Litkevich Yuriy
  опции профиля:
сообщение 8.2.2009, 16:19
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


В классе QAbstractItemView есть метод setModel(QAbstractItemModel *model)

Цитата
/*!
Sets the \a model for the view to present.

\bold{Note:} This function will also create and set a new selection model,
replacing any previously set with setSelectionModel(), but the old selection
model will not be deleted
.

\sa selectionModel(), setSelectionModel()
*/

и подтверждение сказаному:
setSelectionModel(new QItemSelectionModel(d->model, this));


Для меня остается загадкой:
1) либо почему старая не удаляется?
2) либо почему старая не используется?

В примере %QTDIR%\demos\sqlbrowser при выполнении запроса устанавливается для табличного представления QSqlQueryModel, а при просмотре таблицы, для этого же представления, устанавливается QSqlTableModel. Человек реально много раз может переключаться с одной работы на другую. Тем самым модели выделения будут создаваться вновь и вновь. Как-то странно это все.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 9.2.2009, 12:10
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Litkevich Yuriy @ 9.2.2009, 11:59) *
"старая" селекшн-модель может ещё использоваться

ну с deleteLater она удалится после использования, когда управление вернется в режим "ожидания"

Цитата(Litkevich Yuriy @ 9.2.2009, 11:59) *
but the old selection
model will not be deleted.

Да, но тут как-то сказано вскользь, намеками. Тут не сказано, что об удалении должен заботится пользователь.

Вот какая еще штука есть QObjectCleanupHandler
Если ядро сама удалит какой-то QObject, то он автоматически удаляется из списка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Константин_*
сообщение 9.2.2009, 12:44
Сообщение #3





Гости








    


Цитата(SABROG @ 9.2.2009, 12:10) *
Цитата(Litkevich Yuriy @ 9.2.2009, 11:59) *
"старая" селекшн-модель может ещё использоваться

ну с deleteLater она удалится после использования, когда управление вернется в режим "ожидания"

        QTreeView *tree = new QTreeView(this);
        forever
        {
                QItemSelectionModel* sm = tree->selectionModel();
                tree->setModel(0);
                // предполагаем, что в setModel(...) выполнится sm->deleteLater;
                tree->setSelectionModel(sm); // типа, восстановили состояние выбора до сброса модели
        }

ы?


Цитата(SABROG @ 9.2.2009, 12:10) *
Вот какая еще штука есть QObjectCleanupHandler
Если ядро сама удалит какой-то QObject, то он автоматически удаляется из списка.

это тупо кучка QPointer<QObject>. полезной нагрузки мало.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Litkevich Yuriy   QAbstractItemView, или внутренности Qt   8.2.2009, 16:19
- - SABROG   Я мало что понял. Вопрос заключается в том почему ...   8.2.2009, 17:26
- - Litkevich Yuriy   Цитата(SABROG @ 8.2.2009, 20:26) старая э...   8.2.2009, 17:42
- - SABROG   Кстати интересно. Написано, что setModel каждый ра...   8.2.2009, 18:17
- - Litkevich Yuriy   Цитата(SABROG @ 8.2.2009, 21:17) т.е. ста...   8.2.2009, 18:27
- - SABROG   В 4.4.3 ситуация таже. Все экземпляры QItemSelecti...   8.2.2009, 19:31
- - Константин   страшного ничего в этом нет. просто на момент уста...   9.2.2009, 10:16
- - SABROG   Интересно почему Qt сама не делает deleteLater(). ...   9.2.2009, 11:39
- - Litkevich Yuriy   Цитата(SABROG @ 9.2.2009, 14:39) Интересн...   9.2.2009, 12:02
- - SABROG   Цитата(Litkevich Yuriy @ 9.2.2009, 11:59)...   9.2.2009, 12:10
|- - Константин   Цитата(SABROG @ 9.2.2009, 12:10) Цитата(L...   9.2.2009, 12:44
- - Litkevich Yuriy   я думаю, что можно было бы продолжить использовать...   9.2.2009, 13:29
- - SABROG   Цитата(Гость_Константин_* @ 9.2.2009, 12...   9.2.2009, 13:59
- - Litkevich Yuriy   Цитата(SABROG @ 9.2.2009, 16:59) Меня еще...   9.2.2009, 14:14
- - Константин   > А где ты увидел выход в eventloop? согласен, ...   9.2.2009, 14:25
- - SABROG   Цитата(Litkevich Yuriy @ 9.2.2009, 14:14)...   9.2.2009, 14:38
- - Константин   я и не говорил, что к нему достучаться. в лучшем с...   9.2.2009, 15:23
- - Дмитрий -   Подскажите пожалуйста что выбрать? Устанавливаю в ...   2.8.2011, 14:52
- - wiz29   разница именно в моменте удалении непосредственно ...   2.8.2011, 15:43
- - Дмитрий -   В документации для QAbstractItemView::setSelection...   2.8.2011, 17:07


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 15:42