Russian Qt Forum
Ноябрь 24, 2024, 13:52
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
создание новый виджетов на основе старых (как бы копирование виджета)
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: создание новый виджетов на основе старых (как бы копирование виджета) (Прочитано 10031 раз)
daimon
Гость
создание новый виджетов на основе старых (как бы копирование виджета)
«
:
Май 17, 2011, 13:47 »
Есть форма на ней стеквиджет, на одной странице стеквиджета размещена группа виджетов - нужно для настройки кривой. Так вот задача такая количество страниц стеквиджета для настройки кривых графика изначально не известно, но минимум одна точно уже есть. При добавлении новой кривой - видно по структуре, которая идёт в класс формы, должна добавляться новая страница в стеквиджет с теми виджетами (только копия, а не адрес) для настройки новых кривых. Так как копирование виджетов запрещено программно, я не знаю как сделать. Новый класс настройки кривой делать не хочу, хочу как-то использовать, что есть на форме уже готовое (одна страница стеквиджета с внутренними виджетами)
Посоветуйте, что сделать?
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #1 :
Май 17, 2011, 13:50 »
Один и тот же виджет может быть только в одном месте.
Записан
Qt 5.11/4.8.7 (X11/Win)
daimon
Гость
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #2 :
Май 17, 2011, 14:41 »
Цитата: GreatSnake от Май 17, 2011, 13:50
Один и тот же виджет может быть только в одном месте.
как тогда реализвать мою идею про динамическое добавление новых страниц в стеквиджет?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #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
Гость
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #4 :
Май 17, 2011, 15:00 »
Цитата: kambala от Май 17, 2011, 14:59
а что мешает создать виджет-родитель (хоть отдельный класс, хоть на лету) для группы виджетов и его добавлять в стек?
так получиться громоздко - был один класс, всё в нём (всё из формы) и вытаскивал
просто без дизайнера, да ещё один диалог, как-то не удобно, но если нет больше варианта, то придётся
«
Последнее редактирование: Май 17, 2011, 15:02 от daimon
»
Записан
mkv
Гость
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #5 :
Май 17, 2011, 15:58 »
похожую задачу решал при помощи QTabBar, QDataWidgetMapper и MVC
QTabBar - высылает сигналы о изменении таба, на него реагирует QDataWidgetMapper который проецирует данные из модели на набор виджетов.
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #6 :
Май 17, 2011, 16:37 »
Цитата: daimon от Май 17, 2011, 13:47
Есть форма на ней стеквиджет, на одной странице стеквиджета размещена группа виджетов - нужно для настройки кривой. Так вот задача такая количество страниц стеквиджета для настройки кривых графика изначально не известно, но минимум одна точно уже есть. При добавлении новой кривой - видно по структуре, которая идёт в класс формы, должна добавляться новая страница в стеквиджет с теми виджетами (только копия, а не адрес) для настройки новых кривых. Так как копирование виджетов запрещено программно, я не знаю как сделать. Новый класс настройки кривой делать не хочу, хочу как-то использовать, что есть на форме уже готовое (одна страница стеквиджета с внутренними виджетами)
Посоветуйте, что сделать?
Аха, и для каждой кривой создавать новые однотипные виджеты. Гениально)
Когда для переключения между наборами данных, которые отображет одна группа виджетов, достаточно просто менять сами данные и не клонировать их представление.
Прочитайте про MVC.
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
daimon
Гость
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #7 :
Май 17, 2011, 17:14 »
Цитата: m_ax от Май 17, 2011, 16:37
Цитата: daimon от Май 17, 2011, 13:47
Есть форма на ней стеквиджет, на одной странице стеквиджета размещена группа виджетов - нужно для настройки кривой. Так вот задача такая количество страниц стеквиджета для настройки кривых графика изначально не известно, но минимум одна точно уже есть. При добавлении новой кривой - видно по структуре, которая идёт в класс формы, должна добавляться новая страница в стеквиджет с теми виджетами (только копия, а не адрес) для настройки новых кривых. Так как копирование виджетов запрещено программно, я не знаю как сделать. Новый класс настройки кривой делать не хочу, хочу как-то использовать, что есть на форме уже готовое (одна страница стеквиджета с внутренними виджетами)
Посоветуйте, что сделать?
Аха, и для каждой кривой создавать новые однотипные виджеты. Гениально)
Когда для переключения между наборами данных, которые отображет одна группа виджетов, достаточно просто менять сами данные и не клонировать их представление.
Прочитайте про MVC.
проще говоря - есть группа виджет - их в один виджет засунуть (класс) и к нему отправлять данные для отображения на этих же виджетах, а когда надо добавить новую кривую - просто новый объект и туда структура с настройками
а как модель привязать к виджетам не знаю, читал только про таблицы, деревья и списки, мол создаётся модель и вешается во вьювер, а как подобное с виджетами сделать и на какое представление тогда вешать не знаю
Записан
daimon
Гость
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #8 :
Май 17, 2011, 17:39 »
Надо создать наследника от базового класса модели и ещё сделать своё представление.
Поясните на простом примере: один виджет (QlineEdit)
«
Последнее редактирование: Май 17, 2011, 17:49 от daimon
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #9 :
Май 17, 2011, 17:42 »
Цитата: daimon от Май 17, 2011, 17:39
то понятно надо создать наследника от базового класса модели и сделать свою модель и сделать своё представление, чтоли
поясните на простом примере мол один виджет (QlineEdit) и он даёт строку для настроек
Твой "русский" настолько сложен для понимания, что просто слов нет
Записан
Qt 5.11/4.8.7 (X11/Win)
daimon
Гость
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #10 :
Май 17, 2011, 17:49 »
Надо создать наследника от базового класса модели и ещё сделать своё представление.
Поясните на простом примере: один виджет, на котором QlineEdit, Этот виджет и будет создаваться каждый раз как появляется новая кривая.
Что должно быть в модели?
Я думаю в модели сами данные - те настройки, которые забираются с представления - структура настроек графика
Что в представлении?
Я думаю в представлении должно описываться про виджеты в представлении и работа с моделью.
А вот точнее не знаю.
«
Последнее редактирование: Май 17, 2011, 18:09 от daimon
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #11 :
Май 17, 2011, 18:07 »
Цитата: daimon от Май 17, 2011, 17:49
Надо создать наследника от базового класса модели и ещё сделать своё представление.
Поясните на простом примере: один виджет (QlineEdit)
Мде... Запрос просто бредовый...
Тебе же уже предложили почитать о MVC. Вот хотя бы
это
.
«
Последнее редактирование: Май 17, 2011, 18:12 от GreatSnake
»
Записан
Qt 5.11/4.8.7 (X11/Win)
_OLEGator_
Гость
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #12 :
Май 17, 2011, 18:49 »
Зачем клонировать виджеты, при редактировании нужной кривой просто обновлять данные в виджетах и все, запоминаешь текущую редактируемую кривую, обновил данные, применил изменения...
Записан
daimon
Гость
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #13 :
Май 17, 2011, 19:28 »
Цитата: _OLEGator_ от Май 17, 2011, 18:49
Зачем клонировать виджеты, при редактировании нужной кривой просто обновлять данные в виджетах и все, запоминаешь текущую редактируемую кривую, обновил данные, применил изменения...
слево список с пунктами меню, по индексу вызывается страница стеквиджета, как потом стягивать в настройки, если например разные
на картинке пока только для одной кривой
«
Последнее редактирование: Май 17, 2011, 19:45 от daimon
»
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: создание новый виджетов на основе старых (как бы копирование виджета)
«
Ответ #14 :
Май 17, 2011, 19:50 »
Цитата: daimon от Май 17, 2011, 19:28
Цитата: _OLEGator_ от Май 17, 2011, 18:49
Зачем клонировать виджеты, при редактировании нужной кривой просто обновлять данные в виджетах и все, запоминаешь текущую редактируемую кривую, обновил данные, применил изменения...
слево список с пунктами меню, по индексу вызывается страница стеквиджета, как потом стягивать в настройки, если например разные
Ну даже не знаю что и сказать..
Нет никакой необходимости для каждой кривой создавать новые виджеты только лишь для того, чтоб отобразить на них другой набор данных. Это очень плохое решение.
Кстати, если вы посмотрите в реализацию lightplot2d, то найдёте там нужное вам решение.
Вот пример, о котором вы вероятно говорите:
Слева список всех кривых, справа панель с виджетами для визуализации и редактирования данных.
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...