Как в делегате реализовать открытие окна для редактирования, именно окна, которое не будет "портиться" при окончании редакт |
Здравствуйте, гость ( Вход | Регистрация )
Как в делегате реализовать открытие окна для редактирования, именно окна, которое не будет "портиться" при окончании редакт |
Анна |
21.3.2014, 13:29
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
Хотела реализовать интерфейс, похожий на MSVS: Список структур с данными, отображенный в QTreeView, при двойном щелчке на элементе создаётся окно в QMdiArea для редактирования структуры. Если окно для элемента списка уже создано, то оно становится активным.
Возникли две проблемы: 1. Для отслеживания, какие окна уже созданы, хотела использовать в делегате QMap<void*, QWidget*>, первый параметр указатель на структуру, второй параметр - окно QMdiSubWindow.
Я так понимаю, что QMap не хочет в качестве ключа брать указатель, который не const, так как в insert оба параметра const. Пробовала явно приводить к const, не помогло. Я вообще с QMap никогда не имела дела, что делаю не так , не понимаю. 2. Если не связываться с QMap, а в делегате открывать диалог для редактирования, то в QTreeView затирается ячейка с выбранным элементом. Мне надо, чтобы делегат в ячейке ничего не трогал, ничего не перерисовывал. как этого добиться? Сообщение отредактировал Анна - 21.3.2014, 14:39 |
|
|
Анна |
21.3.2014, 14:58
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
С 1), кажется, разобралась - сама функция createEditor() является const. Пойду в обход.
|
|
|
Текстовая версия | Сейчас: 29.3.2024, 18:52 |