Название: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: pawok от Ноябрь 29, 2011, 12:35 Всем привет.
Для того чтобы можно было править пользовательский интерфейс на коленке, интерфейс были вынесен из программы. Интерфейс рисовался в svg. В нужных местах (атрибуты, тэги, текст) вставлялись переменные, которые перед отображением заполнялись переменными. После рендеринга определялись области кликабельности каждого элемента по id, таким образом осуществлялась обратная связь. Рендеринг svg происходил в отдельном потоке, а в основной передавалась картинка. Рендеринг вызывался с определенной частотой (раз-два в секунду). Такой способ не позволяет использовать динамические объекты (анимацию) или изменять некоторые данные с частотой больше одного-двух раз в секунду. Программа сейчас работает и для тех задач для которых писалась вполне подходит. Хочется реализовать такой интерфейс: - который можно быстро рисовать и его мог создавать человек не связанный с программированием; - который можно было править на лету; - который позволял бы использовать анимацию, виджетов на подобие динамических графиков, таблиц. Есть несколько идей, и хотелось узнать мнение других. 1. Реализовать свой редактор, библиотеку своих виджетов и возможность, добавления пользовательских виджетов. 2. Использовать qml. 3. Парсить svg и создавать свои виджеты в graphicsview. Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Bepec от Ноябрь 29, 2011, 13:43 Эм а можно вопрос? Зачем собственно?
Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: pawok от Ноябрь 29, 2011, 14:43 Цитировать Для того чтобы можно было править пользовательский интерфейс на коленке... Пример? Есть набор данных для отображения, он изменился (добавились/изменились/стали не нужны данные), нужно поменять отображение (добавить элемент, перегруппировать, удалить, ...). Используя такой подход, человек, который даже не понимает программирование может, все изменить сразу же, в простом редакторе. Не надо пересобирать программу. Иногда даже не нужно останавливать программу. Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Пантер от Ноябрь 29, 2011, 14:45 QML, но он сырой - намаешься.
Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Bepec от Ноябрь 29, 2011, 14:50 Это конечно хорошо, но нужна ли среда для полной разработки такой программы. можно ведь и прослойку написать самому. Варианты полей, вывод данных, основанное на сигнала слотах.
Конечно это будет не полноценный конструктор, но он будет рабочий-динамический, самописный. А полноценные конструкторы ой сколько памяти жрут :) Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: xokc от Ноябрь 29, 2011, 17:37 Можно еще интерфейс на HTML ваять (или XML + XSL) и выводить во встроенный браузер или вообще Flash использовать. Я бы на QML делал.
Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Igors от Ноябрь 29, 2011, 19:48 Программа сейчас работает и для тех задач для которых писалась вполне подходит. А может перехочется? Поймите правильно, я не заглядываю в Ваш карман, но для таких капитальных переделок нужен бюджет, иначе говорить не о чем.Хочется реализовать такой интерфейс: Парсить svg придется так или иначе, на рендер-картинке далеко не уедешь. Сначала надо создать структуры данных (содержимое svg файла) - а там видно будет. Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: kosya от Ноябрь 29, 2011, 20:25 тебе скины нужно реализовать чтоли?
Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Пантер от Ноябрь 29, 2011, 20:34 тебе скины нужно реализовать чтоли? Нет. Легко изменяемый гуй, а не скин гуя.Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: _OLEGator_ от Ноябрь 30, 2011, 08:47 Самому полностью с нуля такое писать, да еще с графическим редактором форм - это вы надолго застрянете.
Как вариант, можно переписать QtDesigner под себя, реализовав привязку данных к элементу, в виде ключей, названия полей или чего-то другого. Реализовать парсер этих ключей и связывание их с данными. Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Пантер от Ноябрь 30, 2011, 08:59 Есть еще динамическая подгрузка ui.
Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Whiplash от Ноябрь 30, 2011, 09:00 Я просто подгружаю нарисованные в дизайнере формы через QUiLoader.
Формы хранятся в базе. Чтоб по-быстрому сделать слепил небольшую прогу, которая тащит форму из базы, сохраняет во временный файл и открывает дизайнер. В дизайнере рисуем, что нужно. По закрытию дизайнера форма обновляется в базе. Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Whiplash от Ноябрь 30, 2011, 09:05 А весь функционал реализую с помощью динамических свойств - запросы к базе, обновления виджетов и т.п. Вообще, самое мудрое будет просто подключить QtScript. Хранить текст скрипта в динамическом свойстве виджета или экшн и выполнять по мере необходимости.
Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: pawok от Декабрь 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/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/05/26/table-view-with-qt-quick/) http://labs.qt.nokia.com/2011/08/26/toplevel-windows-and-menus-with-qt-quick/ (http://labs.qt.nokia.com/2011/08/26/toplevel-windows-and-menus-with-qt-quick/) Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Fregloin от Декабрь 01, 2011, 18:35 что мешает использовать GraphicsScene?
Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: panAlexey от Декабрь 02, 2011, 15:56 Я просто подгружаю нарисованные в дизайнере формы через QUiLoader. Ананас (http://ananas.su) называется?Формы хранятся в базе. Чтоб по-быстрому сделать слепил небольшую прогу, которая тащит форму из базы, сохраняет во временный файл и открывает дизайнер. В дизайнере рисуем, что нужно. По закрытию дизайнера форма обновляется в базе. Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: panAlexey от Декабрь 02, 2011, 18:08 Самому полностью с нуля такое писать, да еще с графическим редактором форм - это вы надолго застрянете. зависит от того, как за это взяться. от ширины пожеланий.Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: Whiplash от Декабрь 02, 2011, 21:05 Не, какой ананас... Внутренняя разработка небольшой фирмы. В стадии разработки ещё :)
База - Firebird. Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: fuCtor от Декабрь 03, 2011, 13:16 ИМХО самым простым и гибким вариантом будет написание универсального кода на C++ с которым потом можно будет взаимодействовать из QWebView. И делать интерфейсы не сложно и гибкость и динамичность, главное чтобы статичная часть была максимально продуманна и предоставляла все необходимые функции.
Название: Re: Реализация пользовательского интерфейса отдельно от основной программы Отправлено: SASA от Декабрь 05, 2011, 17:37 Property Browser. Меняешь проперти объекта - поменялся интерфейс.
|