![]() |
|
![]() ![]() ![]() |
|
gpepsi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 14.3.2010 Репутация: нет Всего: нет |
Есть объект, который посылает сигнал.
Этот объект нужно хранить в QMap. Чтоб не забыть подписать сигнал этого объекта к слоту владельца QMap хотелось бы, чтоб он сам подписывался на слот через свой конструктор. Можно ли как это сделать ? Это что-то вроде boost::function. Причем хотелось бы, чтоб он модписывался опционально (если был передан метод) Или есть ли еще какие способы дернуть слот другого объекта, не передавая указательна него в конструкторе ? |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
В конструктор нужно передать указатель на объект со слотом или дать возможность каким-либо способом определить его.
Где делать connect - без разницы, можно в объекте со слотом, можно в объекте с сигналом, можно в третьем объекте. |
|||
|
||||
gpepsi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 14.3.2010 Репутация: нет Всего: нет |
ну тогда этот объект сможет посылать сигналы только тому типу, который передан через конструктор. И, к тому же, необходимо будет знать сигнатуру слота. А хотелось как-то типа QMetaMethod |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Не значешь указателя объекта со слотом? Можно сделать так:
В Appilcation : public QApplication определяешь свой сигнал. Объект со слотом соединяется с сигналом приложения в своём конструкторе. Объект с сигналом тоже соединяет свой сигнал с сигналом приложения и сигнал передаётся на слот через сигнал приложения. Добавлено через 3 минуты и 26 секунд Сигнатура слота должна совпадать с сигнатурой сигнала (или не иметь аргументов), так что её знать нужно в любом случае. Если сигнатуры не совпадают, нужно писать класс-переходник. |
|||
|
||||
gpepsi |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 14.3.2010 Репутация: нет Всего: нет |
если не ошибаюсь, то это законно
в слот будет передан только один аргумент 'a' P.S. Или наоборот, но сигнатуры могут не совпадать |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Всё равно слот с произвольной сигнатурой подсоединить нельзя, у слота могут отсутствовать параметры, присутствующие в сигнале, отсальные параметры должны совпадать (возможны добавление const и & ), но чтобы добавить или изменить параметры, нужно писать переходник. |
|||
|
||||
_GRIN_ |
|
||||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
gpepsi, вы хотите странного =)
сигнатуры могут не совпадать, в случае, если у слота часть параметро по умолчанию например
тогда справедливы следующие коннекты
Как правильно утверждают классики - для ваших задач уже наверняка есть говотое (и много раз проверенное другими) решение. Необходимость в изобретении велосипеда скорее всего вызыванна неправильным проектированием =) -------------------- Дорогу осилит идущий |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |