Название: скрипт и типы Отправлено: Авварон от Апрель 14, 2010, 23:30 Начал изучать qt скрипт
Должно ли работать такое (у меня не хочет): Код: MainWindow.centralWidget.webView.url = MainWindow.centralWidget.lineEdit.text; Код: print(MainWindow.centralWidget.webView.url); и собсно как сделать кастомное преобразование типов? видел подобное в ассистанте (где был геттер с наследником QObject но ща не могу найти) Название: Re: скрипт и типы Отправлено: asvil от Апрель 15, 2010, 12:44 Работает, возможно, потому что qt script позволяет вызывать функции без аргументов без скобок (стандарт ecma script вроде бы это позволяет).
qthelp://com.trolltech.qt.460/qdoc/scripting.html Вот такие строки: Код: obj = {}; Код: MainWindow.centralWidget.webView.__defineGetter("propUrl", function() {return this.url();}); Название: Re: скрипт и типы Отправлено: Авварон от Апрель 15, 2010, 15:09 ну сами геттеры\сеттеры регистрируются, толку-то?
даже если написать MainWindow.centralWidget.webView.setUrl(url); мы идем лесом:( Название: Re: скрипт и типы Отправлено: asvil от Апрель 15, 2010, 19:26 А что setUrl не слот?
Тогда надо наследоваться и через Q_INVOKABLE|Q_SLOT переопределять методы. И вообще есть qt script bindings generator, который к сожалению имеет минус монолитности. После загрузки оберток qt классов, становяться доступными все открытые методы классов. Название: Re: скрипт и типы Отправлено: Авварон от Апрель 15, 2010, 20:19 setURl не слот, но урл помечена как проперти (ф-ия WRITE указана). Разве этого недостаточно?
Название: Re: скрипт и типы Отправлено: asvil от Апрель 16, 2010, 00:13 Достаточно. А собственно:
Код: #include <QScriptTools> Название: Re: скрипт и типы Отправлено: Авварон от Апрель 16, 2010, 10:44 о, ваш код дебаггера работает:)
если пишем так: Код: webView.setUrl(lineEdit.text); Код: Uncaught exception at :/script.js:33: TypeError: Result of expression 'webView.setUrl' [undefined] is not a function. Код: webView.url = lineEdit.text; Название: Re: скрипт и типы Отправлено: asvil от Апрель 16, 2010, 11:44 А что должно работать? При установке url представление должно автоматически его загрузить и отобразить или еще что-нибудь сделать?
Для нахождения направления дальнейших исследований: 1. в c++ коде нужно попробовать: Код: webView.setProperty("url", lineEdit.property("text").toString()); Код: print(lineEdit.text); Название: Re: скрипт и типы Отправлено: Авварон от Апрель 16, 2010, 13:59 1. пашет
2. пашет. Дебаггер молчит Название: Re: скрипт и типы Отправлено: asvil от Апрель 16, 2010, 17:48 Поподробнее:)
Первый вариант должен работать, как если бы в c++ было вызывано QWebView::setUrl(); Второй вариант в Debug Output в qt script отладчике должен напечатать две строки. Название: Re: скрипт и типы Отправлено: Авварон от Апрель 16, 2010, 19:38 1й вариант загружает страницу, 2й печатает 2 строки:)
к примеру http://ya.ru about:blank Название: Re: скрипт и типы Отправлено: asvil от Апрель 16, 2010, 21:54 Долго не мог понять зачем слово "типы" в теме. Не поленился полез глянул на тип свойства. Ба, да там же QUrl. И сразу все стало на свои места.
Значит по хорошему должно быть так: Код: MainWindow.centralWidget.webView.url = new QUrl(MainWindow.centralWidget.lineEdit.text); Код: QScriptValue stringToUrlWrapper(QScriptContext* context, QScriptEngine* engine) Код: engine->globalObject().setProperty("stringToUrl", engine->newFunction(stringToUrlWrapper)); Код: MainWindow.centralWidget.webView.url = stringToUrl(MainWindow.centralWidget.lineEdit.text); P.S. Ну зато потрындели:) Название: Re: скрипт и типы Отправлено: Авварон от Апрель 17, 2010, 00:26 ну я в общем-то это и спрашивал) как у скрипта с левыми типами (конкретно QUrl). За код спасибо, попробую:)
added: прикольно:) только надо Код: return engine->newVariant(Url(context->argument(0).toString())); Название: Re: скрипт и типы Отправлено: asvil от Апрель 17, 2010, 10:25 Первый путь.
В инициализации qt script среды: Код: qScriptRegisterMetaType<QUrl>(engine, QUrlToScriptValue, QUrlFromScriptValue); Код: QScriptValue QUrlToScriptValue(QScriptEngine *eng, const QUrl &ba) Название: Re: скрипт и типы Отправлено: Авварон от Апрель 17, 2010, 12:00 да, такое тоже работает:) спасибо))
|