Название: QTableView остаются артефакты делегатов при смене модели Отправлено: MedEx от Август 13, 2012, 21:41 Раньше работал 1 представление - 1 модель. Понадобилось в представлении менять модели (подгружать данные из базы). Для модели набор делегатов к столбцам чекбоксы, нередактируемый листедит, комбобоксы. Меняю модель, данные новые, а делегаты на прежних позициях. Вероятно они где-то прописываются в представлении, а вот как его очистить решения я пока не нашёл...ну разве что создавать новое представление. Если камрады сталкивались с таким подводным камнем прошу поделиться решением!
Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: Bepec от Август 14, 2012, 06:54 Делегаты ставятся на представление. На ячейки.
Чтобы их оттуда убрать их надо оттуда выдрать. К модели делегаты имеют отношения смутные и невнятные :) Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: MedEx от Август 14, 2012, 08:29 Логично, а есть ли способы добраться к сетке?
Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: Bepec от Август 14, 2012, 08:42 К какой сетке? Если про разделители ячеек - они спокойно отключаются/включаются. Методы стандартные.
Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: MedEx от Август 14, 2012, 08:46 Как я понял проблему, необходимо установить количество столбцов равное 0. В QTableWidget это setColCount(int). А в QTableView что-то немогу найти ничего похожего и гугл молчит. Либо изменить записанную в представлении привязку делегатов, тоесть извлечь их, вопрос как?
Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: Kurles от Август 14, 2012, 09:06 Смутно понятен вопрос. Количество столбцов устанавливается в модели, а не в представлении. Минимально компилируемый проект в аттаче поможет глубже вникнуть в вашу проблему )
Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: MedEx от Август 14, 2012, 09:53 Легко, любой пример по QTableView. Присваиваем модель и делегат столбцу. Присваиваем другую модель (другого формата столбцов и строк), делегат на прежнем месте.
В аттаче стандартный пример из book, сначала грузим модель 2(с чекбоксом), затем модель 1 (без чекбокса) а чекер на месте. Глубины 0, просто изъять делегат из представления. Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: MedEx от Август 14, 2012, 11:16 Костылик был найден
http://www.qtcentre.org/threads/34464-Persistent-(changing)-model-and-delegate-deletion (http://www.qtcentre.org/threads/34464-Persistent-(changing)-model-and-delegate-deletion) Код: // Get the current delegate Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: Странник от Август 14, 2012, 11:32 другого метода и нет, если вам необходимо удалять делегаты. непонятно разве что, почему автор стесняется удалить QAbstractItemDelegate *.
либо, если модели меняются очень часто, можете хранить список указателей на делегаты для колонок в каком-нибудь QMap<int, QAbstractItemDelegate *>, чтобы лишний раз потом не пересоздавать объекты, а очищать делегаты для представления с помощью setItemDelegate. Название: Re: QTableView остаются артефакты делегатов при смене модели Отправлено: MedEx от Август 14, 2012, 12:47 Код: // Get the current delegate |