Название: [Qt 4.3.2] Что есть QMetaMethod::Method? Отправлено: Dodge от Декабрь 05, 2007, 14:30 В классе QMetaMethod есть метод methodType, возвращающиий тип метода. С сигналом и слотом все ясно, а вот что в данном случае будет являтся методом? Погонял это дело на своих и qt'шных классах (наследованных от qobject), и ни разу не наткнулся на метод с таким типом.
Поясню откуда у вопроса ноги растут. Из Qt Script'а мозно вызывать методы объектов зарегестрированных в движке, но только методы с типом сигнал/слот, т.о. к обычному паблику из скрипта не добраться. Получается что, если хочешь использовать qt'шный класс в скрипте, то буть добр оберни, и сделай все нужные функции слотами. Бред. Тут пришла в голову мысля(от сотрудника ;D), что если можно получить доступ к мета-методам, то можно написать ретранслятор, который бы в себе мог создовать(в динамике) слоты, к которым можно приконнектится(тоже в динамике), и при их вызове вызывать соответствующие методы у целевого объекта. Мысли есть какие нибуть? Название: Re: [Qt 4.3.2] Что есть QMetaMethod::Method? Отправлено: pastor от Декабрь 05, 2007, 14:53 Непойму зачем городить такой огород. Чем собственно не устраивает слот?
Название: Re: [Qt 4.3.2] Что есть QMetaMethod::Method? Отправлено: Dodge от Декабрь 05, 2007, 14:59 Я согласен что это огород, но:
1. Очень интересная конструкция. 2. Универсальность, ретранслятору можно былобы подсунуть любой объект, сконфигурить его и дальше не парится. 3. Надаж всетаки узнать что есть QMetaMethod::Method ;D Название: Re: [Qt 4.3.2] Что есть QMetaMethod::Method? Отправлено: vaprele07 от Декабрь 05, 2007, 15:20 см Q_INVOKABLE
Название: Re: [Qt 4.3.2] Что есть QMetaMethod::Method? Отправлено: pastor от Декабрь 05, 2007, 15:23 Можно закрутить цикл и проверить что есть что (сам лично никогда это не использова). Ну например так:
Код: QMetaObject *meta_object = <some_object>->metaObject(); В каждой ветке свича можно вывести информацию: parameterNames, parameterTypes, signature etc. Название: Re: [Qt 4.3.2] Что есть QMetaMethod::Method? Отправлено: Dodge от Декабрь 05, 2007, 17:19 Можно закрутить цикл и проверить что есть что (сам лично никогда это не использова). Ну например так: Это вообще к чему?Код: QMetaObject *meta_object = <some_object>->metaObject(); В каждой ветке свича можно вывести информацию: parameterNames, parameterTypes, signature etc. vaprele07 спс, разобрался. QMetaMethod::Method это метод класса объявленный в секции паблик с исп макроса Q_INVOKABLE. Например: Код: class MyTest : public QObject { Меня интересует почему в данном случае test2 не является мета-методом... о нем вообще отсутствует информация в мета обжекте... сразу напрашивается следующее: метакомилятор не может отличить конструктор/диструктор объекта от метода. Позже проверю и выложу результаты дабы полностью закрыть тему. |