Russian Qt Forum
Ноябрь 25, 2024, 17:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызвать метод объекта.  (Прочитано 6812 раз)
masha
Гость
« : Июнь 30, 2009, 14:48 »

Хочу уточнить.
Есть например некое приложение на Qt, в котором встроена поддержка языка сценариев. Я, работая в этом приложении, могу создать виджет (вызывется Qt Designer), набросать туда элементы, а потом в скрипте могу с ними взаимодействовать. Всё прекрасно, но мне вдруг понадобился какой-нибудь список. Я добавила ComboBox, и получается, я его из сценария заполнить данными не могу??  Грустный
Записан
masha
Гость
« Ответ #1 : Июнь 30, 2009, 18:07 »

ну очень надо  Грустный
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Июнь 30, 2009, 18:36 »

>>и получается, я его из сценария заполнить данными не могу??
А почему такой вывод, на основе чего?
Записан

Юра.
masha
Гость
« Ответ #3 : Июль 01, 2009, 09:58 »

А почему такой вывод, на основе чего?
Так вроде, чтобы заполнить ComboBox, используем addItem() | insertItem() - а это public методы, для них вроде как метакод не генерируется. Из скрипта доступны только сигналы/слоты и свойства.
Почитала, что для этого надо методы описывать с макросом Q_INVOKABLE или делать их слотами. А у меня, вроде как, нет возможности переопределить этот класс.
Записан
masha
Гость
« Ответ #4 : Июль 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();  -  со скобками, и работает!!

Может, кто сталкивался, подскажите, пожалуйста!
« Последнее редактирование: Июль 06, 2009, 17:33 от masha » Записан
masha
Гость
« Ответ #5 : Июль 08, 2009, 17:22 »

Решение нашлось! Qt Script Generator как раз для этого. Теперь могу создавать кутэ-объекты и вызывать любые их методы.
http://labs.trolltech.com/page/Projects/QtScript/Generator
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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