Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: OKTA от Март 07, 2013, 00:40



Название: [РЕШЕНО] QMetaObject::invokeMethod
Отправлено: OKTA от Март 07, 2013, 00:40
Товарищи! Помогите! Не могу понять, в чем проблема так сказать!

Вызываю метод:
Код:
QMetaObject::invokeMethod(main, "writeSettingsToDB", Qt::QueuedConnection,
                                  Q_ARG(QVariantMap, map), Q_ARG(QString, table));

Он соответственно объявлен как:
Код:
void writeSettingsToDB(const QVariantMap &map, QString &table);

Но при этом, в дебаг вылазит :
Код:
QMetaObject::invokeMethod: No such method uMain::writeSettingsToDB(QVariantMap,QString)

Что может быть не так??


Название: Re: QMetaObject::invokeMethod
Отправлено: alexis031182 от Март 07, 2013, 00:52
writeSettingsToDB() слот?


Название: Re: QMetaObject::invokeMethod
Отправлено: OKTA от Март 07, 2013, 00:54
Конечно!!


Название: Re: QMetaObject::invokeMethod
Отправлено: alexis031182 от Март 07, 2013, 01:01
Тогда единственное const и амперсенд


Название: Re: QMetaObject::invokeMethod
Отправлено: OKTA от Март 07, 2013, 01:07
хм, да, дело было в &, а не const. Забавно конечно! И сразу вопрос специалисту не отходя от кассы! Хотел уточнить - если у меня два объекта в разных потоках, то напрямую вызывая слот соседнего объекта,  он исполнится в исходном потоке, верно?


Название: Re: QMetaObject::invokeMethod
Отправлено: alexis031182 от Март 07, 2013, 01:19
Да. Если вызывать напрямую, то исполнится в том потоке, из которого вызывают.