Название: Вызвать метод объекта. Отправлено: masha от Июнь 30, 2009, 14:48 Хочу уточнить.
Есть например некое приложение на Qt, в котором встроена поддержка языка сценариев. Я, работая в этом приложении, могу создать виджет (вызывется Qt Designer), набросать туда элементы, а потом в скрипте могу с ними взаимодействовать. Всё прекрасно, но мне вдруг понадобился какой-нибудь список. Я добавила ComboBox, и получается, я его из сценария заполнить данными не могу?? :( Название: Re: Вызвать метод объекта. Отправлено: masha от Июнь 30, 2009, 18:07 ну очень надо :(
Название: Re: Вызвать метод объекта. Отправлено: lit-uriy от Июнь 30, 2009, 18:36 >>и получается, я его из сценария заполнить данными не могу??
А почему такой вывод, на основе чего? Название: Re: Вызвать метод объекта. Отправлено: masha от Июль 01, 2009, 09:58 А почему такой вывод, на основе чего? Так вроде, чтобы заполнить ComboBox, используем addItem() | insertItem() - а это public методы, для них вроде как метакод не генерируется. Из скрипта доступны только сигналы/слоты и свойства.Почитала, что для этого надо методы описывать с макросом Q_INVOKABLE или делать их слотами. А у меня, вроде как, нет возможности переопределить этот класс. Название: Re: Вызвать метод объекта. Отправлено: masha от Июль 06, 2009, 17:32 По ходу ещё проблемка появилась :(
Т.к. мне нужен ComboBox с методом Q_INVOKABLE addItem(), решила в QtDesigner встроить свой виджет: class QDESIGNER_WIDGET_EXPORT InvocableComboBox : public QComboBox { Q_OBJECT // Q_PROPERTY(QString curItem READ curItem WRITE newItem) public: InvocableComboBox(QWidget *parent = 0); ~InvocableComboBox(); //Q_INVOKABLE void newItem() {}; public slots: QString curItem() {return currentText();} void newItem() {}; }; Всё прекрасно встроился. Теперь пытаюсь из скрипта вызывать эти слоты, пусть даже они пустые: почему же на newItem() - он ругается, если без скобок newItem - не ругается, но ничего не делает, т.е. curItem - ничего не возвращает, хотя если в скрипте вызвать Dialog.comboBox.currentText - возвращает текущее значение ??? Ведь Dialog.exec(); - со скобками, и работает!! Может, кто сталкивался, подскажите, пожалуйста! Название: Re: Вызвать метод объекта. Отправлено: masha от Июль 08, 2009, 17:22 Решение нашлось! Qt Script Generator как раз для этого. Теперь могу создавать кутэ-объекты и вызывать любые их методы.
http://labs.trolltech.com/page/Projects/QtScript/Generator |