Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странная ошибка при привязке сигнала и слота 
V
    Опции темы
КоТ
  Дата 30.5.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ругается на строчку: QObject::connect(mw->QWdownloadProgramm, SIGNAL(clicked()), vw, SLOT(QWDownloadCliked()));
пишет:  ошибка: нет подходящей функции для вызова ‘QObject::connect(QPushButton*&, const char [11], QTextEditor*&, const char [20])’
/usr/lib/qt3//include/qobject.h:116: замечание: претенденты: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*)

 
пробовал добавлять & : &(mw->QWdownloadProgramm) , но получается: ошибка: нет подходящей функции для вызова ‘QObject::connect(QPushButton**, const char [11], QTextEditor**, const char [20])’
/usr/lib/qt3//include/qobject.h:116: замечание: претенденты: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*)


исправления типа: *(&(mw->QWdownloadProgramm) ) возвращают к прежней ошибке, оно и логично.

строчкой выше подобным образом соединяю другие сигналы и слоты, всё работает.
mw и vw - указатели на диалоговые окна.

Это сообщение отредактировал(а) КоТ - 30.5.2009, 10:17
PM MAIL   Вверх
andrew_121
Дата 30.5.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

Репутация: 11
Всего: 33



Покажи декларацию QWDownloadCliked()


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Любитель
Дата 30.5.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Единственное, что можно предположить - компилятор не видит, что QPushButton и QTextEditor оба наследники QObject. Инклюд какой-нибудь не забыли? Для одного из этих классов.


--------------------
PM MAIL ICQ Skype   Вверх
andrew_121
Дата 30.5.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

Репутация: 11
Всего: 33



Любитель, Да нет. Я думаю что метод к которому пытаются привязать сигал, просто метод, а не слот.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Любитель
Дата 30.5.2009, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(andrew_121 @  30.5.2009,  19:30 Найти цитируемый пост)
Я думаю что метод к которому пытаются привязать сигал, просто метод, а не слот. 

В таком случае не было бы ошибки компиляции. Просто коннект во время выполнения завершился бы с ошибкой. В этом особенность кутешной работы с сигнал/слотами - можно передать любую строку (!) на самом деле. Макросы SIGNAL, SLOT абсолютно идентичны и просто упаковывают свой аргумент как строку - а передать туда можно на самом деле что угодно.

Цитата(КоТ @  30.5.2009,  10:12 Найти цитируемый пост)
ошибка: нет подходящей функции для вызова ‘QObject::connect(QPushButton*&, const char [11], QTextEditor*&, const char [20])’
/usr/lib/qt3//include/qobject.h:116: замечание: претенденты: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*)

Т. е. что мы имеем один из аргументов в первой сигнатуре не подходит под аргументы второй (коннекта). Строки (сигнал и слот) сразу отпадают - с ними всё нормально. А вот указатель на QPushButton или QTextEditor в указатель на QObject компилятор неявно преобразует, только если будет знать, что они наследники QObject.

Цитата(КоТ @  30.5.2009,  10:12 Найти цитируемый пост)
mw->QWdownloadProgramm

Судя по всему эта кнопка из основного окна (main window?). Опуская грубое проектирования (паблик поля..), вернёмся к ошибке. Логично предположить, что есть инклюд на наш заголовок с объявлением класса нашего главного окна. А в этом заголовке вероятно есть предварительное объявление QPushButton:
Код

class QPushButton;


Но инклюда QPushButton нету. Компилятор знает, что это класс, но не знает, что он наследник QObject. Из-за этого ошибка компиляции.

Можешь проверить подобное у себя ;)

Вот такая вот "практическая телепатия" smile


--------------------
PM MAIL ICQ Skype   Вверх
andrew_121
Дата 30.5.2009, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

Репутация: 11
Всего: 33



Цитата(Любитель @  30.5.2009,  21:08 Найти цитируемый пост)
В таком случае не было бы ошибки компиляции. Просто коннект во время выполнения завершился бы с ошибкой.

Прошу прощения, не заметил.

Цитата(Любитель @  30.5.2009,  21:08 Найти цитируемый пост)
Компилятор знает, что это класс, но не знает, что он наследник QObject. Из-за этого ошибка компиляции.

Думаю, все именно так.

П.С.
Еще обратил внимание на версию Кут - 3 smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Любитель
Дата 31.5.2009, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(andrew_121 @  30.5.2009,  23:07 Найти цитируемый пост)
Еще обратил внимание на версию Кут - 3

Да, я замтеил. Но в данном случае - суть одна.


--------------------
PM MAIL ICQ Skype   Вверх
КоТ
Дата 31.5.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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