Russian Qt Forum

Qt => Вопросы новичков => Тема начата: MaxoBik от Сентябрь 07, 2015, 12:29



Название: QObject::connect: No such signal
Отправлено: MaxoBik от Сентябрь 07, 2015, 12:29
Доброго времени суток.
Импортирую один класс из динамической библиотеки, пытаюсь присоединится к сигналу в этом классе, но получаю ошибку QObject::connect: No such signal.
Что проверенно:
- это не проблема с Q_OBJECT(он есть везде)
- это не проблема с moc_***.cpp - он включаются корректно
- это не проблема с сигнатурами сигнала и слота или value type(передаются reference types объектов как и положено)
- сигнал экспортируется в библиотеке - в таблице импорта он есть
- вроде бы не проблема с unicode - отключал и включал его поддержку в проекте

Что еще может вызывать такую ошибку?


Название: Re: QObject::connect: No such signal
Отправлено: Пантер от Сентябрь 07, 2015, 13:52
Код покажи.


Название: Re: QObject::connect: No such signal
Отправлено: MaxoBik от Сентябрь 07, 2015, 20:15
Код покажи.

Код:
QtColorPropertyManager* m_colorManager;
connect(m_colorManager, SIGNAL(valueChanged(QtProperty *property, const QColor &val)),
   this, SLOT(on_colorValueChanged(QtProperty *property, const QColor &val)));
С моим кодом вроде все в порядке, и сигнал вроде есть QtColorPropertyManager::valueChanged (https://github.com/kbinani/qt-solutions/blob/1d8380b65c3264dc2013e6e9a499390a570ace77/qtpropertybrowser/src/qtpropertymanager.h#L708)


Название: Re: QObject::connect: No such signal
Отправлено: Old от Сентябрь 07, 2015, 20:18
А где само создание объека?
Вы создали указатель, указывающий куда попало.


Название: Re: QObject::connect: No such signal
Отправлено: MaxoBik от Сентябрь 07, 2015, 20:27
А где само создание объека?
Вы создали указатель, указывающий куда попало.
Я опустил эту часть, m_colorManager член класса, в конструкторе я его объявляю, там все в порядке, проблема не в этом.
Вот еще что:
Код:
qDebug() << m_colorManager->metaObject()->indexOfSignal("valueChanged(QtProperty*,QColor)");
Выводит 9.
Код:
	for(int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i)
qDebug() <<  QString::fromLatin1( metaObject->method(i).methodSignature() );
Цитировать
"valueChanged(QtProperty*,QColor)"
"setValue(QtProperty*,QColor)"
"slotIntChanged(QtProperty*,int)"
"slotPropertyDestroyed(QtProperty*)"
Не пойму, что за мистика такая.


Название: Re: QObject::connect: No such signal
Отправлено: Old от Сентябрь 07, 2015, 20:35
В строке коннекта уберите имена переменных из аргументов сигнала и слота.


Название: Re: QObject::connect: No such signal
Отправлено: MaxoBik от Сентябрь 07, 2015, 20:36
В строке коннекта уберите имена переменных из аргументов сигнала и слота.
Черт, точно, спасибо, привык уже на новом стиле подключатся.