Название: Не вызываются слоты Отправлено: finka от Февраль 06, 2008, 14:04 Вот у меня есть класс
Код: #include "logindialog.h" connect возвращает 1, но слот temp() напрочь отказывается выполняться. Пробовала другие слоты класса ModuleManager - не выполняются, пробовала connect(privateDialog, SIGNAL(accepted()), privateDialog, SLOT(deleteLater())) privateDialog удаляется, то есть сигнал accepted() срабатывает. Почему это может происходить? Qt 4.3.1, XP, vs2005. Название: Re: Не вызываются слоты Отправлено: ритт от Февраль 06, 2008, 16:20 выглядит корректно...
логиндиалог - наследник кудиалога? в каком месте логиндиалог выполняется? попробуй ещё вот это: http://qt4.digitalfanatics.org/articles/signalspy.html Название: Re: Не вызываются слоты Отправлено: finka от Февраль 06, 2008, 18:20 Да, наследник от QDialog.
Код: privateDialog = new LoginDialog; Название: Re: Не вызываются слоты Отправлено: Sergey B. от Февраль 06, 2008, 19:45 if (connect(privateDialog, SIGNAL(accepted()), this, SLOT(temp())))
Что возвращает connect? Название: Re: Не вызываются слоты Отправлено: finka от Февраль 07, 2008, 11:04 Sergey B. , возвращает 1.
Название: Re: Не вызываются слоты Отправлено: Karl-Philipp от Февраль 07, 2008, 15:08 Если условие выполнятся, то скорее всего проблема внутри слота. Посмотрите, работает ли слот сам по себе?
Название: Re: Не вызываются слоты Отправлено: finka от Февраль 08, 2008, 18:58 terlan, работает.
Название: Re: Не вызываются слоты Отправлено: finka от Февраль 08, 2008, 19:48 Вот main, может тут че-то не то:
Код: int main (int argc, char **argv) Все слоты ModuleManager по отдельности вызываются, но при коннекте отказываются реагировать на любые сигналы любых классов (я попробовала, правда, только 2, но и так понятно), кроме своих собственных. Если какой-нибудь сигнал ModuleManager соединить со слотом другого класса, например, loginDialog (но я и не только его пробовала), то при emit этого сигнала, нужный слот вызывается. Прям какая-то slotовая дискриминация по каким-то признакам ??? :'( *тут смайлик help* Название: Re: Не вызываются слоты Отправлено: BRE от Февраль 08, 2008, 20:13 Без обид. Это проблемы со знанием C++.
Hint: Объект moduleManager или не создается вовсе или разрушается перед app.exec(). Не знаю, чего ты хочешь добиться, но обрати на это внимание. ;) Название: Re: Не вызываются слоты Отправлено: finka от Февраль 08, 2008, 20:26 Упс! Слона-то я и не приметил ;D
Название: Re: Не вызываются слоты Отправлено: pastor от Февраль 08, 2008, 23:08 Без обид. Это проблемы со знанием C++. Hint: Объект moduleManager или не создается вовсе или разрушается перед app.exec(). Не знаю, чего ты хочешь добиться, но обрати на это внимание. ;) Судя из предыдущих постов объект moduleManager создаеться, так как privateDialog диалог отображаеться. Из преведенного кода я невижу причин удаления объекта moduleManager 2 finka: Я сделал подобный экзампл, проблем никаких нет (Qt 4.3.3). Ты можешь запостить полный код, чтобы я проверил у себя? Название: Re: Не вызываются слоты Отправлено: finka от Февраль 08, 2008, 23:34 pastor, я засунула exec() в скобки после условия, и все заработало:) Так как указателю loginDialog (и, кстати, всем остальным объектам, с помощью которых впоследствии проверяла коннекты) я выделяла память через new, то он и не удалялся с удалением ModuleManager. Поэтому все мои объекты друг с другом коннектились, а с ModuleManager'ом не хотели.
Название: Re: Не вызываются слоты Отправлено: pastor от Февраль 09, 2008, 02:02 Упс )) Я тоже этого же слона и не заметил ))))
2 BRE: Сорри, был не прав :) Название: Re: Не вызываются слоты Отправлено: Dodge от Февраль 11, 2008, 16:58 Междупрочим, уже второй раз замечаю подобную ошибку у людей с нашего ворума... сразу видно, кто НЕ дети vcl'я )))
|