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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Реализация пользовательского интерфейса отдельно от основной программы  (Прочитано 9463 раз)
pawok
Гость
« : Ноябрь 29, 2011, 12:35 »

Всем привет.
Для того чтобы можно было править пользовательский интерфейс на коленке, интерфейс были вынесен из программы.

Интерфейс рисовался в svg. В нужных местах (атрибуты, тэги, текст) вставлялись переменные, которые перед отображением заполнялись переменными. После рендеринга определялись области кликабельности каждого элемента по id, таким образом осуществлялась обратная связь. Рендеринг svg происходил в отдельном потоке, а в основной передавалась картинка. Рендеринг вызывался с определенной частотой (раз-два в секунду).
Такой способ не позволяет использовать динамические объекты (анимацию) или изменять некоторые данные с частотой больше одного-двух раз в секунду.

Программа сейчас работает и для тех задач для которых писалась вполне подходит.

Хочется реализовать такой интерфейс:
- который можно быстро рисовать и его мог создавать человек не связанный с программированием;
- который можно было править на лету;
- который позволял бы использовать анимацию, виджетов на подобие динамических графиков, таблиц.

Есть несколько идей, и хотелось узнать мнение других.

1. Реализовать свой редактор, библиотеку своих виджетов и возможность, добавления пользовательских виджетов.
2. Использовать qml.
3. Парсить svg и создавать свои виджеты в graphicsview.
Записан
Bepec
Гость
« Ответ #1 : Ноябрь 29, 2011, 13:43 »

Эм а можно вопрос? Зачем собственно?
Записан
pawok
Гость
« Ответ #2 : Ноябрь 29, 2011, 14:43 »

Цитировать
Для того чтобы можно было править пользовательский интерфейс на коленке...

Пример?
Есть набор данных для отображения, он изменился (добавились/изменились/стали не нужны данные), нужно поменять отображение (добавить элемент, перегруппировать, удалить, ...).

Используя такой подход, человек, который даже не понимает программирование может, все изменить сразу же, в простом редакторе. Не надо пересобирать программу. Иногда даже не нужно останавливать программу.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Ноябрь 29, 2011, 14:45 »

QML, но он сырой - намаешься.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Bepec
Гость
« Ответ #4 : Ноябрь 29, 2011, 14:50 »

Это конечно хорошо, но нужна ли среда для полной разработки такой программы. можно ведь и прослойку написать самому. Варианты полей, вывод данных, основанное на сигнала слотах.
Конечно это будет не полноценный конструктор, но он будет рабочий-динамический, самописный.

А полноценные конструкторы ой сколько памяти жрут Улыбающийся
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #5 : Ноябрь 29, 2011, 17:37 »

Можно еще интерфейс на HTML ваять (или XML + XSL) и выводить во встроенный браузер или вообще Flash использовать. Я бы на QML делал.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Ноябрь 29, 2011, 19:48 »

Программа сейчас работает и для тех задач для которых писалась вполне подходит.

Хочется реализовать такой интерфейс:
А может перехочется? Поймите правильно, я не заглядываю в Ваш карман, но для таких капитальных переделок нужен бюджет, иначе говорить не о чем.

Парсить svg придется так или иначе, на рендер-картинке далеко не уедешь.  Сначала надо создать структуры данных (содержимое svg файла) - а там видно будет.
Записан
kosya
Гость
« Ответ #7 : Ноябрь 29, 2011, 20:25 »

тебе скины нужно реализовать чтоли?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Ноябрь 29, 2011, 20:34 »

тебе скины нужно реализовать чтоли?
Нет. Легко изменяемый гуй, а не скин гуя.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
_OLEGator_
Гость
« Ответ #9 : Ноябрь 30, 2011, 08:47 »

Самому  полностью с нуля такое писать, да еще с графическим редактором форм - это вы надолго застрянете.
Как вариант, можно переписать QtDesigner под себя, реализовав привязку данных к элементу, в виде ключей, названия полей или чего-то другого.
Реализовать парсер этих ключей и связывание их с данными.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Ноябрь 30, 2011, 08:59 »

Есть еще динамическая подгрузка ui.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Whiplash
Гость
« Ответ #11 : Ноябрь 30, 2011, 09:00 »

Я просто подгружаю нарисованные в дизайнере формы через QUiLoader.
Формы хранятся в базе. Чтоб по-быстрому сделать слепил небольшую прогу, которая тащит форму из базы, сохраняет во временный файл и открывает дизайнер. В дизайнере рисуем, что нужно. По закрытию дизайнера форма обновляется в базе.
Записан
Whiplash
Гость
« Ответ #12 : Ноябрь 30, 2011, 09:05 »

А весь функционал реализую с помощью динамических свойств - запросы к базе, обновления виджетов и т.п. Вообще, самое мудрое будет просто подключить QtScript. Хранить текст скрипта в динамическом свойстве виджета или экшн и выполнять по мере необходимости.
Записан
pawok
Гость
« Ответ #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 Offline

Сообщений: 1025


Просмотр профиля
« Ответ #14 : Декабрь 01, 2011, 18:35 »

что мешает использовать GraphicsScene?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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