Russian Qt Forum
Ноябрь 24, 2024, 14:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: создание новый виджетов на основе старых (как бы копирование виджета)  (Прочитано 10035 раз)
daimon
Гость
« : Май 17, 2011, 13:47 »

Есть форма на ней стеквиджет, на одной странице стеквиджета размещена группа виджетов - нужно для настройки кривой. Так вот задача такая количество страниц стеквиджета для настройки кривых графика изначально не известно, но минимум одна точно уже есть. При добавлении новой кривой - видно по структуре, которая идёт в класс формы, должна добавляться новая страница в стеквиджет с теми виджетами (только копия, а не адрес) для настройки новых кривых. Так как копирование виджетов запрещено программно, я не знаю как сделать. Новый класс настройки кривой делать не хочу, хочу как-то использовать, что есть на форме уже готовое (одна страница стеквиджета с внутренними виджетами)
Посоветуйте, что сделать?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Май 17, 2011, 13:50 »

Один и тот же виджет может быть только в одном месте.
Записан

Qt 5.11/4.8.7 (X11/Win)
daimon
Гость
« Ответ #2 : Май 17, 2011, 14:41 »

Один и тот же виджет может быть только в одном месте.
как тогда реализвать мою идею про динамическое добавление новых страниц в стеквиджет?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Май 17, 2011, 14:59 »

а что мешает создать виджет-родитель (хоть отдельный класс, хоть на лету) для группы виджетов и его добавлять в стек?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
daimon
Гость
« Ответ #4 : Май 17, 2011, 15:00 »

а что мешает создать виджет-родитель (хоть отдельный класс, хоть на лету) для группы виджетов и его добавлять в стек?
так получиться громоздко - был один класс, всё в нём (всё из формы) и вытаскивал
просто без дизайнера, да ещё один диалог, как-то не удобно, но если нет больше варианта, то придётся
« Последнее редактирование: Май 17, 2011, 15:02 от daimon » Записан
mkv
Гость
« Ответ #5 : Май 17, 2011, 15:58 »

похожую задачу решал при помощи QTabBar, QDataWidgetMapper и MVC
QTabBar - высылает сигналы о изменении таба, на него реагирует QDataWidgetMapper который проецирует данные из модели на набор виджетов.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #6 : Май 17, 2011, 16:37 »

Есть форма на ней стеквиджет, на одной странице стеквиджета размещена группа виджетов - нужно для настройки кривой. Так вот задача такая количество страниц стеквиджета для настройки кривых графика изначально не известно, но минимум одна точно уже есть. При добавлении новой кривой - видно по структуре, которая идёт в класс формы, должна добавляться новая страница в стеквиджет с теми виджетами (только копия, а не адрес) для настройки новых кривых. Так как копирование виджетов запрещено программно, я не знаю как сделать. Новый класс настройки кривой делать не хочу, хочу как-то использовать, что есть на форме уже готовое (одна страница стеквиджета с внутренними виджетами)
Посоветуйте, что сделать?
Аха, и для каждой кривой создавать новые однотипные виджеты. Гениально)
Когда для переключения между наборами данных, которые отображет одна группа виджетов, достаточно просто менять сами данные и не клонировать их представление.
Прочитайте про MVC.
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
daimon
Гость
« Ответ #7 : Май 17, 2011, 17:14 »

Есть форма на ней стеквиджет, на одной странице стеквиджета размещена группа виджетов - нужно для настройки кривой. Так вот задача такая количество страниц стеквиджета для настройки кривых графика изначально не известно, но минимум одна точно уже есть. При добавлении новой кривой - видно по структуре, которая идёт в класс формы, должна добавляться новая страница в стеквиджет с теми виджетами (только копия, а не адрес) для настройки новых кривых. Так как копирование виджетов запрещено программно, я не знаю как сделать. Новый класс настройки кривой делать не хочу, хочу как-то использовать, что есть на форме уже готовое (одна страница стеквиджета с внутренними виджетами)
Посоветуйте, что сделать?
Аха, и для каждой кривой создавать новые однотипные виджеты. Гениально)
Когда для переключения между наборами данных, которые отображет одна группа виджетов, достаточно просто менять сами данные и не клонировать их представление.
Прочитайте про MVC.

проще говоря - есть группа виджет - их в один виджет засунуть (класс) и к нему отправлять данные для отображения на этих же виджетах, а когда надо добавить новую кривую - просто новый объект и туда структура с настройками

а как модель привязать к виджетам не знаю, читал только про таблицы, деревья и списки, мол создаётся модель и вешается во вьювер, а как подобное с виджетами сделать и на какое представление тогда вешать не знаю
Записан
daimon
Гость
« Ответ #8 : Май 17, 2011, 17:39 »

Надо создать наследника от базового класса модели и ещё сделать своё представление.
Поясните на простом примере: один виджет (QlineEdit)
« Последнее редактирование: Май 17, 2011, 17:49 от daimon » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Май 17, 2011, 17:42 »

то понятно надо создать наследника от базового класса модели и сделать свою модель и сделать своё представление, чтоли
поясните на простом примере мол один виджет (QlineEdit) и он даёт строку для настроек
Твой "русский" настолько сложен для понимания, что просто слов нет Грустный
Записан

Qt 5.11/4.8.7 (X11/Win)
daimon
Гость
« Ответ #10 : Май 17, 2011, 17:49 »

Надо создать наследника от базового класса модели и ещё сделать своё представление.
Поясните на простом примере: один виджет, на котором QlineEdit, Этот виджет и будет создаваться каждый раз как появляется новая кривая.

Что должно быть в модели?
Я думаю в модели сами данные - те настройки, которые забираются с представления - структура настроек графика
Что в представлении?
Я думаю в представлении должно описываться про виджеты в представлении и работа с моделью.

А вот точнее не знаю.
« Последнее редактирование: Май 17, 2011, 18:09 от daimon » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Май 17, 2011, 18:07 »

Надо создать наследника от базового класса модели и ещё сделать своё представление.
Поясните на простом примере: один виджет (QlineEdit)
Мде... Запрос просто бредовый...
Тебе же уже предложили почитать о MVC. Вот хотя бы это.
« Последнее редактирование: Май 17, 2011, 18:12 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
_OLEGator_
Гость
« Ответ #12 : Май 17, 2011, 18:49 »

Зачем клонировать виджеты, при редактировании нужной кривой просто обновлять данные в виджетах и все, запоминаешь текущую редактируемую кривую, обновил данные, применил изменения...
Записан
daimon
Гость
« Ответ #13 : Май 17, 2011, 19:28 »

Зачем клонировать виджеты, при редактировании нужной кривой просто обновлять данные в виджетах и все, запоминаешь текущую редактируемую кривую, обновил данные, применил изменения...
слево список с пунктами меню, по индексу вызывается страница стеквиджета, как потом стягивать в настройки, если например разные

на картинке пока только для одной кривой
« Последнее редактирование: Май 17, 2011, 19:45 от daimon » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #14 : Май 17, 2011, 19:50 »

Зачем клонировать виджеты, при редактировании нужной кривой просто обновлять данные в виджетах и все, запоминаешь текущую редактируемую кривую, обновил данные, применил изменения...
слево список с пунктами меню, по индексу вызывается страница стеквиджета, как потом стягивать в настройки, если например разные
Ну даже не знаю что и сказать..
Нет никакой необходимости для каждой кривой создавать новые виджеты только лишь для того, чтоб отобразить на них другой набор данных. Это очень плохое решение.
Кстати, если вы посмотрите в реализацию lightplot2d, то найдёте там нужное вам решение.
Вот пример, о котором вы вероятно говорите:
Слева список всех кривых, справа панель с виджетами для визуализации и редактирования данных.
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.107 секунд. Запросов: 23.