Название: Изменение значения при передачи от сигнала слоту Отправлено: AAXEE от Ноябрь 08, 2009, 01:25 Здравствуйте!
Чтобы объяснить суть моего вопроса приведу простой пример. Допустим у нас есть QCheckBox и QLineEdit. И требование при поставленной галочке поле доступно для редактирования, а при отсутствии галочки - недоступно. Решается это очень просто: Код: connect( сheckBox , SIGNAL( toggled( bool ) ) , lineEdit , SLOT( readOnly( bool ) ) ) ; Хотя понятно, что принципиальных различий в описании первого и второго случая нет, реализации выглядят по-разному. 1. Есть ли какой-то способ в connectе изменить передаваемое значение? 2. Думаю, что такого способа нет, поэтому другой вопрос: почему бы троллям не сделать что-то вроде Код: connect( сheckBox , SIGNAL( toggled( param ) ) , lineEdit , SLOT( readOnly( not param ) ) ) ; 3. Какое решение в примере идеологически правильное? Спасибо! Название: Re: Изменение значения при передачи от сигнала слоту Отправлено: lit-uriy от Ноябрь 08, 2009, 02:14 1. Нет
2. Может подойдёт выбор одного из слотов: setEnabled(bool) / setDisabled(bool) П.С. У QLineEdit слота readOnly(...) не нашёл Название: Re: Изменение значения при передачи от сигнала слоту Отправлено: AAXEE от Ноябрь 08, 2009, 10:32 setEnabled и setDisabled в данном случае подходят, но я имел ввиду, конечно, общий случай(например у сигнала параметр х, а у слота х^2)
Цитировать П.С. У QLineEdit слота readOnly(...) не нашёл Пример придуманный, поэтому ошибся, но суть не в этом.Название: Re: Изменение значения при передачи от сигнала слоту Отправлено: Vexator от Ноябрь 09, 2009, 04:18 вообще было бы не плохо расширить систему сигналов/слотов, добавив туда возможность как задавать простые выражения так и константы
Название: Re: Изменение значения при передачи от сигнала слоту Отправлено: SASA от Ноябрь 09, 2009, 23:13 A что мешает создать свой "маленький" объект посредник. Определить у него метод, типа invert_connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method), слот sl(bool) и сигнал si(bool). В invert_connec коннектить signal с слотом sl, а слот method, с сигналом si. В слоте sl испускать сигнал si с инвернутным сигналом.
Название: Re: Изменение значения при передачи от сигнала слоту Отправлено: spectre71 от Ноябрь 09, 2009, 23:56 вообще было бы не плохо расширить систему сигналов/слотов, добавив туда возможность как задавать простые выражения так и константы Не имеет смысла! 1) Ситуация очень редкая. 2) Касается только соединенний на уровне дизайнера - всегда можно сделать наследника(либо посредника) со своим слотом, с необходимым преобразованием. 3) Подобные, индивидуальные пожелания будут всегда - за всеми не угнаться 4) Из "кубиков" (в дизайнере) - всего не сделать. Название: Re: Изменение значения при передачи от сигнала слоту Отправлено: Vexator от Ноябрь 10, 2009, 05:44 Не имеет смысла! Ну смысл то имеет, это точно. вопрос только в целесообразности и сложности реализации 1) да ситуация редкая, но иногда возникает, и приходиться городить лишний код там, где можно было бы обойтись 1 строчкой, а это всегда ПЛОХО 3) это да, прогресс собственно это и есть попытка угнатсья за пожеланиями 4) ну чем больше можно сделать, тем лучше |