crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Проблема с QObject::connect
vaansk
  опции профиля:
сообщение 5.10.2013, 13:07
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 5.10.2013
Пользователь №: 3944

Спасибо сказали: 0 раз(а)




Репутация:   0  


Имеется приложение

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ourtrack w;

    MainList List(w.ui.TableResult, w.ui.EditFind);
    QObject::connect(w.ui.ButtonFind, SIGNAL(clicked()), &a, SLOT(List.ShowList()));

    w.show();
    return a.exec();
}


Однако при нажатии на ButtonFind на форме ничего не происходит.
Если написать
QObject::connect(w.ui.ButtonFind, SIGNAL(clicked()), &a, SLOT(quit()));

то все нормально и при нажатии на ButtonFind форма закрывается

В чем ошибка в первом варианте?

Делал класс MainList подклассом w.ui и в конструкторе MainProg:
QObject::connect(ui.ButtonFind, SIGNAL(clicked()), this, SLOT(List.ShowList()));

эффект такой же
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 5.10.2013, 13:47
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Попробуйте так:
QObject::connect(w.ui.ButtonFind, SIGNAL(clicked()), &List, SLOT(ShowList()));

Внутри "SLOT" нужно писать только имя слота. А receiver это у вас не QApplication а MainList.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vaansk
  опции профиля:
сообщение 5.10.2013, 14:29
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 5.10.2013
Пользователь №: 3944

Спасибо сказали: 0 раз(а)




Репутация:   0  


не компилится

Цитата
Error 1 error C2665: 'QObject::connect' : none of the 3 overloads could convert all the argument types C:\VSC\main.cpp 10


при наведении на SLOT пишет "too many arguments in functions call"
пробовал и
... &List, SLOT(ShowList()));

и
... &List, SLOT(MainList::ShowList()));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 5.10.2013, 16:33
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Проверьте что MainList наследуется от QObject и использует макрос Q_OBJECT. Метод ShowList должен быть объявлен как слот.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.10.2013, 14:23
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(vaansk @ 5.10.2013, 15:07) *
В чем ошибка в первом варианте?
В том что у QApplication (объект которого ты передаёшь в качестве объекта-получателя) нет слота List.ShowList()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0rdex
  опции профиля:
сообщение 8.10.2013, 9:29
Сообщение #6


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 2.8.2013
Пользователь №: 3894

Спасибо сказали: 0 раз(а)




Репутация:   0  


Litkevich Yuriy, правильно говорит + дебагер обычно пишет найден ли слот.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 14:42