Название: [Решено] Коннект сигнала с фактическим параметром Отправлено: Pritcher от Январь 14, 2015, 21:37 Форумчане, привет!
Имеется 4 кнопки в доке. Хочу сделать коннекты, связывающие сигнал triggered() и сигнал signalModeChanged( int n), где n от 1 до 4 соответственно. Вот что у меня есть Код: connect( actionDrawDot, SIGNAL( triggered() ), m_scene, SIGNAL( signalModeChanged( 1 ) ) ); Но это не работает, приходится для каждого сигнала делать отдельный слот, который выполняет лишь 1 действие: ставит нужное мне число, а это пахнет говнокодом. Можно ли организовать нечто подобное без определения отдельного сигнала для QAction? Название: Re: Коннект сигнала с фактическим параметром Отправлено: Hrundel от Январь 14, 2015, 21:39 Как ты себе это представляешь - сигнал с сигналом соединить?
Смотри сюда (http://qt-project.org/doc/qt-4.8/signalsandslots.html) Говнокодом скорее всего пахнет архитектура твоего приложения. Название: Re: Коннект сигнала с фактическим параметром Отправлено: Pritcher от Январь 14, 2015, 21:41 Сигнал с сигналом прекрасно коннектится
Архитектура, действительно, может быть неидеальной, но меня интересует именно возможность коннекта сигнала с фактическим параметром Название: Re: Коннект сигнала с фактическим параметром Отправлено: Hrundel от Январь 14, 2015, 21:43 Ну давай, вперед!
Название: Re: Коннект сигнала с фактическим параметром Отправлено: Old от Январь 14, 2015, 21:49 Попробуйте новый формат коннекта + std::bind.
Название: Re: Коннект сигнала с фактическим параметром Отправлено: gil9red от Январь 14, 2015, 22:20 Вы можете action объединить с помощью QActionGroup и ловить только 1 сигнал, сигнал от этой группы
По поводу, значений, которые действия назначают, у action есть метод setData, в него вы кладете номер который вам нужен После в слоте, который соединен с сигналом группы получаете указатель на action, из него вытаскиваете номер, используя метод data Код
Код не проверял, но ошибок, вроде бы нет :) Название: Re: Коннект сигнала с фактическим параметром Отправлено: kambala от Январь 14, 2015, 23:31 QSignalMapper
Название: Re: Коннект сигнала с фактическим параметром Отправлено: Bepec от Январь 14, 2015, 23:49 А почему никто новый стандарт не приводит? :D
Название: Re: Коннект сигнала с фактическим параметром Отправлено: Pritcher от Январь 15, 2015, 07:34 gil9red, думаю, вам метод будет самым подходящим в сложившейся ситуации, спасибо.
kambala, ваша идея тоже будет смотреться неплохо. Bepec, спасибо за инфу. P.S. в конце концов, сделал QSignalMapper. Соединять сигналы и слоты с фактическими параметрами, увы, Qt не умеет. Название: Re: [Решено] Коннект сигнала с фактическим параметром Отправлено: qate от Январь 15, 2015, 08:34 Имеется 4 кнопки в доке. Хочу сделать коннекты, связывающие сигнал triggered() и сигнал signalModeChanged( int n), где n от 1 до 4 соответственно. QObject * QObject::sender() и затем signalModeChanged(i) - если я правильно понял желаемое Название: Re: Коннект сигнала с фактическим параметром Отправлено: Old от Январь 15, 2015, 10:43 Соединять сигналы и слоты с фактическими параметрами, увы, Qt не умеет. Умеет.И я даже написал как: Код
Название: Re: Коннект сигнала с фактическим параметром Отправлено: __Heaven__ от Январь 15, 2015, 10:50 Как ты себе это представляешь - сигнал с сигналом соединить? Смотри сюда (http://qt-project.org/doc/qt-4.8/signalsandslots.html) В этой же статье имеется Цитировать It is even possible to connect a signal directly to another signal. Название: Re: Коннект сигнала с фактическим параметром Отправлено: Hrundel от Январь 16, 2015, 23:52 Как ты себе это представляешь - сигнал с сигналом соединить? Смотри сюда (http://qt-project.org/doc/qt-4.8/signalsandslots.html) В этой же статье имеется Цитировать It is even possible to connect a signal directly to another signal. ОК, но вопрос - зачем? Название: Re: [Решено] Коннект сигнала с фактическим параметром Отправлено: kambala от Январь 17, 2015, 02:14 пересылать сигналы через цепочку объектов например
Название: Re: Коннект сигнала с фактическим параметром Отправлено: __Heaven__ от Январь 17, 2015, 12:17 ОК, но вопрос - зачем? Ну вот, как у автора, например. Это дает возможность соединиться со слотом из другого класса, который испускает два сигнала. Я этим пользовался, когда мне хотелось коннекты перенести в конструктор родителя и мне это позволило сэкономить строчки в конструкторе потомка.Название: Re: Коннект сигнала с фактическим параметром Отправлено: Hrundel от Январь 17, 2015, 14:07 ОК, но вопрос - зачем? Ну вот, как у автора, например. Это дает возможность соединиться со слотом из другого класса, который испускает два сигнала. Я этим пользовался, когда мне хотелось коннекты перенести в конструктор родителя и мне это позволило сэкономить строчки в конструкторе потомка.Ок! Аргумент! |