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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt Script and XML  (Прочитано 7428 раз)
Nimbus
Гость
« : Март 02, 2010, 19:30 »

Всем доброго времени суток.
В Qt я чайник. Так что, прошу не посылать лесом, а всё доходчиво объяснить. С основными принципами знаком, а вот с расширенными разными фичами как-то не особо.
Вот загорелся желанием сделать движок БД Oracle на Qt. (прикручено к visual studio 2008 со скомпиленными дровами для Оракла, так что, проблем взаимодействия с Бд не наблюдаю).
Но уж очень хочется сделать приложение гибким и стабильным. Чтобы при любых изменениях/добавлениях не пришлось пересобирать приложение и потом обновлять всем сотрудникам организации.
Посетила идея, что необходимо интерфейс клиентской части описать через XML (ну да, можно и .ui, но тут дело такое...), то есть расположение виджетов в диалоге и некоторые ихние атрибуты, а бизнес-логику организовать через Qt Script'ы.

Например, на сервере в одной папке лежат XML-файл и файл с Qt Script'ом. Клиент цепляется к серверу, загружает XML-файл, в котором, в самом начале указана ссылка на наш файл со скриптом. Далее указаны виджеты, их расположение в каком-либо лейауте, текст, а так же (самое главное) обработчик события, который находится в скрипте. Вот самый банальный пример из головы.
Код:
<?xml version="1.0" encoding="utf-8"?>
<dialog layout="vertical">
    <qtscript file="script.js" />
    <widget type="button" name="button1" text="Btn1" onclick="button1Clicked" />
    <widget type="edit" name="edit1" text="input here" />
</dialog>
При нажатии на кнопку клиентская часть должна считать script.js и выполнить функцию (обработчик) button1Clicked из этого самого файла.
Возможно ли это? При учёте, что в скрипте должны быть доступны все виджеты диалога (ну их вроде можно назначить движку скрипта как глобальные объекты при парсинге XML-документа). То есть должен получиться такой, скажем так, браузер, которому нужно указать лишь пути к xml-документам и приложение можно будет расширять, создавая лишь эти документы и скрипты.
Если можно, то лучше всего приведите пример, пожалуйста.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Март 02, 2010, 20:18 »

Возможно.
А не проще в скрипт протянуть QWidget загрузить его из ui нарисованного дизайнером и работать со всеми доступными методами? Зачем свой формат? В документации на скрипт есть пример протаскивания в скрипт наследника QObject - аналогично QWidegt т.к. он тоже его наследник.
Записан
asvil
Гость
« Ответ #2 : Март 03, 2010, 00:13 »

qt script bindings позволит затащить все или почти все без или почти без багов в qt script.
Это значит что на qt script можно будет рисовать так же как на c++.
а что значит бизнес-логика?
Записан
Nimbus
Гость
« Ответ #3 : Март 03, 2010, 04:43 »

а что значит бизнес-логика?
Как-то так
Аиэта... То, что ui можно будет использовать - замечательно Улыбающийся А пример можно простого приложения, которое загружает ui из файла и тащит все виджеты интерфейса в скрипт, тоже находящийся во внешнем файле? Так же желательно, чтобы обработчики событий/слоты тоже находились в файле со скриптом, это самое важное.
« Последнее редактирование: Март 03, 2010, 06:00 от Nimbus » Записан
asvil
Гость
« Ответ #4 : Март 03, 2010, 09:29 »

начиная отсюда
http://labs.trolltech.com/page/Projects/QtScript/Generator
generator предоставляет QUiLoader.
Заканчиваем ассистентом, который рассказывает как использовать слоты.
qthelp://com.trolltech.qt.460/qdoc/scripting.html
Бизнес логику возможно легче реализовать на стороне sql сервера? В виде триггеров, хранимых функций.
Записан
Nimbus
Гость
« Ответ #5 : Март 03, 2010, 10:09 »

начиная отсюда
http://labs.trolltech.com/page/Projects/QtScript/Generator
generator предоставляет QUiLoader.
Заканчиваем ассистентом, который рассказывает как использовать слоты.
qthelp://com.trolltech.qt.460/qdoc/scripting.html
Бизнес логику возможно легче реализовать на стороне sql сервера? В виде триггеров, хранимых функций.
Спасибо за линки, добрый человек. Не всё возможно реализовать одними лишь триггерами Подмигивающий Всё таки генерация текста запросов происходит на стороне клиента, а это уже к этому относится.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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