Russian Qt Forum
Ноябрь 27, 2024, 05:35
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Реализация пользовательского интерфейса отдельно от основной программы
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Реализация пользовательского интерфейса отдельно от основной программы (Прочитано 9467 раз)
pawok
Гость
Реализация пользовательского интерфейса отдельно от основной программы
«
:
Ноябрь 29, 2011, 12:35 »
Всем привет.
Для того чтобы можно было править пользовательский интерфейс на коленке, интерфейс были вынесен из программы.
Интерфейс рисовался в svg. В нужных местах (атрибуты, тэги, текст) вставлялись переменные, которые перед отображением заполнялись переменными. После рендеринга определялись области кликабельности каждого элемента по id, таким образом осуществлялась обратная связь. Рендеринг svg происходил в отдельном потоке, а в основной передавалась картинка. Рендеринг вызывался с определенной частотой (раз-два в секунду).
Такой способ не позволяет использовать динамические объекты (анимацию) или изменять некоторые данные с частотой больше одного-двух раз в секунду.
Программа сейчас работает и для тех задач для которых писалась вполне подходит.
Хочется реализовать такой интерфейс:
- который можно быстро рисовать и его мог создавать человек не связанный с программированием;
- который можно было править на лету;
- который позволял бы использовать анимацию, виджетов на подобие динамических графиков, таблиц.
Есть несколько идей, и хотелось узнать мнение других.
1. Реализовать свой редактор, библиотеку своих виджетов и возможность, добавления пользовательских виджетов.
2. Использовать qml.
3. Парсить svg и создавать свои виджеты в graphicsview.
Записан
Bepec
Гость
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #1 :
Ноябрь 29, 2011, 13:43 »
Эм а можно вопрос? Зачем собственно?
Записан
pawok
Гость
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #2 :
Ноябрь 29, 2011, 14:43 »
Цитировать
Для того чтобы можно было править пользовательский интерфейс на коленке...
Пример?
Есть набор данных для отображения, он изменился (добавились/изменились/стали не нужны данные), нужно поменять отображение (добавить элемент, перегруппировать, удалить, ...).
Используя такой подход, человек, который даже не понимает программирование может, все изменить сразу же, в простом редакторе. Не надо пересобирать программу. Иногда даже не нужно останавливать программу.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #3 :
Ноябрь 29, 2011, 14:45 »
QML, но он сырой - намаешься.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Bepec
Гость
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #4 :
Ноябрь 29, 2011, 14:50 »
Это конечно хорошо, но нужна ли среда для полной разработки такой программы. можно ведь и прослойку написать самому. Варианты полей, вывод данных, основанное на сигнала слотах.
Конечно это будет не полноценный конструктор, но он будет рабочий-динамический, самописный.
А полноценные конструкторы ой сколько памяти жрут
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #5 :
Ноябрь 29, 2011, 17:37 »
Можно еще интерфейс на HTML ваять (или XML + XSL) и выводить во встроенный браузер или вообще Flash использовать. Я бы на QML делал.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #6 :
Ноябрь 29, 2011, 19:48 »
Цитата: pawok от Ноябрь 29, 2011, 12:35
Программа сейчас работает и для тех задач для которых писалась вполне подходит.
Хочется реализовать такой интерфейс:
А может перехочется? Поймите правильно, я не заглядываю в Ваш карман, но для таких капитальных переделок нужен бюджет, иначе говорить не о чем.
Парсить svg придется так или иначе, на рендер-картинке далеко не уедешь. Сначала надо создать структуры данных (содержимое svg файла) - а там видно будет.
Записан
kosya
Гость
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #7 :
Ноябрь 29, 2011, 20:25 »
тебе скины нужно реализовать чтоли?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #8 :
Ноябрь 29, 2011, 20:34 »
Цитата: kosya от Ноябрь 29, 2011, 20:25
тебе скины нужно реализовать чтоли?
Нет. Легко изменяемый гуй, а не скин гуя.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
_OLEGator_
Гость
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #9 :
Ноябрь 30, 2011, 08:47 »
Самому полностью с нуля такое писать, да еще с графическим редактором форм - это вы надолго застрянете.
Как вариант, можно переписать QtDesigner под себя, реализовав привязку данных к элементу, в виде ключей, названия полей или чего-то другого.
Реализовать парсер этих ключей и связывание их с данными.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #10 :
Ноябрь 30, 2011, 08:59 »
Есть еще динамическая подгрузка ui.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Whiplash
Гость
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #11 :
Ноябрь 30, 2011, 09:00 »
Я просто подгружаю нарисованные в дизайнере формы через QUiLoader.
Формы хранятся в базе. Чтоб по-быстрому сделать слепил небольшую прогу, которая тащит форму из базы, сохраняет во временный файл и открывает дизайнер. В дизайнере рисуем, что нужно. По закрытию дизайнера форма обновляется в базе.
Записан
Whiplash
Гость
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #12 :
Ноябрь 30, 2011, 09:05 »
А весь функционал реализую с помощью динамических свойств - запросы к базе, обновления виджетов и т.п. Вообще, самое мудрое будет просто подключить QtScript. Хранить текст скрипта в динамическом свойстве виджета или экшн и выполнять по мере необходимости.
Записан
pawok
Гость
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #13 :
Декабрь 01, 2011, 10:46 »
Да qml сырой, но судя по активности qt-шников, они за него взялись всерьез. Думается, вскоре появится приемлемый редактор, который не будет виснуть через раз.
Плюсы в qml, по-моему:
1. Можно создавать отдельно виджеты и легко их интегрировать друг в друга.
2. Включать любые виджеты в qml.
3. Открывая qml в обычном редакторе, все легко правится.
4. Можно наваять быстро свой простой редактор (слев просмотр qml, справа его редактирование), все для этого уже есть. Ну, пока не будет нормального редактора.
5. Есть javascript.
Цитировать
но для таких капитальных переделок нужен бюджет
Бюджет есть. Как было выше сказано, нечто уже реализовано на svg и оно используется в текущих проектах, но есть места в которых стоит заплатка и нужно иногда допиливать. Некоторые вещи сделать нельзя.
Так что склоняюсь к qml.
http://labs.qt.nokia.com/2011/03/10/qml-components-for-desktop/
http://labs.qt.nokia.com/2011/05/26/table-view-with-qt-quick/
http://labs.qt.nokia.com/2011/08/26/toplevel-windows-and-menus-with-qt-quick/
«
Последнее редактирование: Декабрь 01, 2011, 11:18 от pawok
»
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Реализация пользовательского интерфейса отдельно от основной программы
«
Ответ #14 :
Декабрь 01, 2011, 18:35 »
что мешает использовать GraphicsScene?
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...