crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Вызвать слот по имени без QScriptEngine
fantom
  опции профиля:
сообщение 4.2.2009, 16:55
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 29.1.2009
Пользователь №: 515

Спасибо сказали: 1 раз(а)




Репутация:   1  


Возможно ли вызвать слот зная его имя в QString? Интересует решение без использования скриптового движка.

Или отправить сигнал таким же способом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
fantom
  опции профиля:
сообщение 5.2.2009, 17:24
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 29.1.2009
Пользователь №: 515

Спасибо сказали: 1 раз(а)




Репутация:   1  


Возникла проблема.
Так работает..
  TestLogic* logic = new TestLogic();
     QMetaObject::invokeMethod(logic, "test", Qt::QueuedConnection);

А так нет..
  QObject *object = new QObject();
     TestLogic *logic = qobject_cast<TestLogic *>(object);
     QMetaObject::invokeMethod(logic, "test", Qt::QueuedConnection);

Класс TestLogic унаследован от QObject.
Как заставить это заработать?


Может надо еще вызвать qRegisterMetaType()? Только я не совсем понял как его вызывать. Если просто qRegisterMetaType<TestLogic>("TestLogic"); то пишет ошибку
/usr/include/QtCore/qobject.h:303: error: 'QObject::QObject(const QObject&)' is private


И еще.. Как я понимаю qobject_cast работает вызывая dynamic_cast? Кто нибудь может на пальцах пояснить концепцию превышающего приведения типов. Что происходит с памятью? Она копируется куда то? Ведь базовый класс занимает меньше места чем производный класс? Насколько это быстрая операция?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 10:43