Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: Nimbus от Март 02, 2010, 19:30



Название: Qt Script and XML
Отправлено: 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-документам и приложение можно будет расширять, создавая лишь эти документы и скрипты.
Если можно, то лучше всего приведите пример, пожалуйста.


Название: Re: Qt Script and XML
Отправлено: break от Март 02, 2010, 20:18
Возможно.
А не проще в скрипт протянуть QWidget загрузить его из ui нарисованного дизайнером и работать со всеми доступными методами? Зачем свой формат? В документации на скрипт есть пример протаскивания в скрипт наследника QObject - аналогично QWidegt т.к. он тоже его наследник.


Название: Re: Qt Script and XML
Отправлено: asvil от Март 03, 2010, 00:13
qt script bindings позволит затащить все или почти все без или почти без багов в qt script.
Это значит что на qt script можно будет рисовать так же как на c++.
а что значит бизнес-логика?


Название: Re: Qt Script and XML
Отправлено: Nimbus от Март 03, 2010, 04:43
а что значит бизнес-логика?
Как-то так (http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%B7%D0%BD%D0%B5%D1%81-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0)
Аиэта... То, что ui можно будет использовать - замечательно :) А пример можно простого приложения, которое загружает ui из файла и тащит все виджеты интерфейса в скрипт, тоже находящийся во внешнем файле? Так же желательно, чтобы обработчики событий/слоты тоже находились в файле со скриптом, это самое важное.


Название: Re: Qt Script and XML
Отправлено: asvil от Март 03, 2010, 09:29
начиная отсюда
http://labs.trolltech.com/page/Projects/QtScript/Generator (http://labs.trolltech.com/page/Projects/QtScript/Generator)
generator предоставляет QUiLoader.
Заканчиваем ассистентом, который рассказывает как использовать слоты.
qthelp://com.trolltech.qt.460/qdoc/scripting.html
Бизнес логику возможно легче реализовать на стороне sql сервера? В виде триггеров, хранимых функций.


Название: Re: Qt Script and XML
Отправлено: Nimbus от Март 03, 2010, 10:09
начиная отсюда
http://labs.trolltech.com/page/Projects/QtScript/Generator (http://labs.trolltech.com/page/Projects/QtScript/Generator)
generator предоставляет QUiLoader.
Заканчиваем ассистентом, который рассказывает как использовать слоты.
qthelp://com.trolltech.qt.460/qdoc/scripting.html
Бизнес логику возможно легче реализовать на стороне sql сервера? В виде триггеров, хранимых функций.
Спасибо за линки, добрый человек. Не всё возможно реализовать одними лишь триггерами ;) Всё таки генерация текста запросов происходит на стороне клиента, а это уже к этому относится.