Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Custom widgets, QObject::connect: signal not found 
V
    Опции темы
Alca
Дата 13.8.2013, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Qt 5.1.0, mingw-48-x32

При запуске приложения - не находяться сигналы:
Цитата

QObject::connect: signal not found
QObject::connect: signal not found

Почему не видны сигналы из виджеты?

Исходники виджета https://bitbucket.org/skynowa/cdbimage/src
Все собиралось одним компилятором, все в релизе

Это сообщение отредактировал(а) Alca - 14.8.2013, 10:10


--------------------
PM WWW ICQ Skype Jabber   Вверх
Guinness
Дата 14.8.2013, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: 2
Всего: 10



Намекну.
Код

void connectCheck(const QObject * sender, const char * signal, 
                const QObject * receiver, const char * method, 
                Qt::ConnectionType type)
{
    bool res = QObject::connect(sender, signal, receiver, method, type);
    if(res == false){
        QMessageBox::critical(0, QObject::trUtf8("Qt connect signal/slot fail"),
                        QObject::trUtf8("<b>Connection problem!!!</b><br>"
                        "Cann`t connect signal(%1) to slot(%2)<br>"
                        "Sender(%3) to receiver(%4)<br>"
                        "%3::%1<br>%4::%2")
                        .arg(signal).arg(method)
                        .arg(sender->objectName()).arg(receiver->objectName())
                    );
    }
}

PM MAIL   Вверх
Alca
Дата 14.8.2013, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Я знаю какие слоты сигналы не работают, я хочу знать почему



--------------------
PM WWW ICQ Skype Jabber   Вверх
Guinness
Дата 14.8.2013, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: 2
Всего: 10



Цитата(Alca @  14.8.2013,  09:18 Найти цитируемый пост)
Я знаю какие слоты сигналы не работают

Из Вашего вопроса это непонятно.
Цитата(Alca @  14.8.2013,  09:18 Найти цитируемый пост)
я хочу знать почему

Ну из той информации, указанной Вами в первом посте, единственное, что приходит в голову, это отсутствие этих сигналов или слотов.
PM MAIL   Вверх
Alca
Дата 14.8.2013, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



CDbImage:
Код

Q_OBJECT

Q_SIGNALS:
    void               sig_dataChanged(cint &index);
    void               sig_pressed(QObject *sender);
    void               sig_doubleClicked(QObject *sender);


Код

...
Q_EMIT sig_dataChanged( index() );
...
Q_EMIT sig_pressed(this);
...
Q_EMIT sig_doubleClicked(this);


Это в приложении:
Код

Q_OBJECT


Код

        connect(ui.dbPhoto, &CDbImage::sig_doubleClicked,
                this,       &CMain::actView_onAlbum);


Это сообщение отредактировал(а) Alca - 14.8.2013, 10:12


--------------------
PM WWW ICQ Skype Jabber   Вверх
Guinness
Дата 14.8.2013, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: 2
Всего: 10



Цитата(Alca @  14.8.2013,  11:08 Найти цитируемый пост)
Код

void               sig_pressed(QObject *sender); 
void               sig_doubleClicked(QObject *sender);


Зачем параметром передавать sender? При приеме сигнала в слоте всегда можно вызвать функцию sender(), которая вернет QObject*. Попробуйте обойтись без этого. Мне кажется, программа просто не может найти сигнал с сигнатурой sig_pressed(CDbImage *), т.е. она автоматически не преобразует this к QObject*.
PM MAIL   Вверх
Guinness
Дата 14.8.2013, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: 2
Всего: 10



Хотя, по идее, эта ошибка должна возникать на этапе компиляции. Т.к. макрос Q_EMIT, это всего лишь синтаксический сахар. Так что выше я ошибся.

Добавлено через 3 минуты и 27 секунд
Цитата(Alca @  14.8.2013,  11:08 Найти цитируемый пост)
        
Код

connect(ui.dbPhoto, &CDbImage::sig_doubleClicked,  this, &CMain::actView_onAlbum);


Вот здесь указана функция sig_doubleClicked, хотя она объявленная в классе как  sig_doubleClicked( QObject * ). Думаю, ошибка все таки в этом.

PM MAIL   Вверх
Alca
Дата 14.8.2013, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Цитата

Вот здесь указана функция sig_doubleClicked, хотя она объявленная в классе как  sig_doubleClicked( QObject * ). Думаю, ошибка все таки в этом.


Выхлоп:
Код

D:\Projects\Qt\XXXDb\Forms\CMain.cpp:-1: error: undefined reference to `CDbImage::sig_doubleClicked(QObject*)'
D:\Projects\Qt\XXXDb\Forms\CMain.cpp:-1: error: undefined reference to `CDbImage::sig_doubleClicked(QObject*)'



--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 14.8.2013, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Ёпт, забыл проинсталить новые хидера плагина  smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1248 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.