Возможно ли вызвать слот зная его имя в QString? Интересует решение без использования скриптового движка.
Или отправить сигнал таким же способом?
можно, см. http://doc.crossplatform.ru/qt/4.3.5/qmetaobject.html#invokeMethod
Спасибо. Буду пробывать.
Возникла проблема.
Так работает..
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);
fantom,
на сколько я понимаю ты пытаешься вызвать метод которого нет в QObject но он есть в TestLogic???
если так то понятен результат.
ведь ты пишешь
QObject *object = new QObject();
а если
QObject *object = new TestLogic();
то стоит проверить. думаю так заработает.
я так думаю что dynamic_cast не досоздает(извините за корявое слово) необходимые члены и методы
класса
и кстати если пользуешь dynamic_cast то проверяй на ноль указатели в ответственных местах.
kwisp ты прав. Так работает.Спасибо.
Ну все равно интересен вопрос про работу dynamic_cast.
И про ошибку при вызове qRegisterMetaType<TestLogic>.
QObject *object = new QObject();
TestLogic *logic = qobject_cast<TestLogic *>(object);
logic->test();
fantom,
а что интересно про dynamic_cast
я подозреваю что если ты имеешь указатель базового класса на область памяти определенную производным классом и преобразуешь
указатель на производный = dynamic_cast<указатель на базовый>
то сработает.
а вообще лучше почитать
что пишут?
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)