Название: QSignalMapper. вызов слота Отправлено: deaks от Декабрь 23, 2010, 11:57 Здравствуйте,
делал по примеру в ассистанте Код: QSignalMapper *signalMapper = new QSignalMapper(this); и соответственно в слоте: Код: QAction *act = dynamic_cast<QAction*>(widget); Но в итоге в слот не заходит. Где мог закрасться косяк?)) Название: Re: QSignalMapper. вызов слота Отправлено: alexman от Декабрь 23, 2010, 12:14 Q_OBJECT указал?
Название: Re: QSignalMapper. вызов слота Отправлено: deaks от Декабрь 23, 2010, 12:20 вы имеете в виду в описание класса? конечно
Название: Re: QSignalMapper. вызов слота Отправлено: twp от Декабрь 23, 2010, 12:24 Установка маппинга со строкой:
Код: signalMapper->setMapping(act, QString(tmpStr)); Код: connect(signalMapper, SIGNAL(mapped(QWidget*)), this, SLOT(loadCustomProject(QWidget*))); Название: Re: QSignalMapper. вызов слота Отправлено: deaks от Декабрь 23, 2010, 12:27 пардон, экспериментировал, но при этом так же результата не наблюдается
signalMapper->setMapping(act, act); Название: Re: QSignalMapper. вызов слота Отправлено: twp от Декабрь 23, 2010, 12:29 act не виджет а значит будет испукаться другой сигнал: mapped ( QObject * object )
Название: Re: QSignalMapper. вызов слота Отправлено: deaks от Декабрь 23, 2010, 12:31 в общем, вместо QWidget поставил QObject и все заработало ;)
Большое спасибо ;) Название: Re: QSignalMapper. вызов слота Отправлено: deaks от Декабрь 23, 2010, 12:31 twp,
я как раз так и сделал)спасибо! Название: Re: QSignalMapper. вызов слота Отправлено: twp от Декабрь 23, 2010, 12:33 в таком случае я вообще не вижу смысл использования QSignalMapper с таким маппингом:
Код: signalMapper->setMapping(act, act); Название: Re: QSignalMapper. вызов слота Отправлено: deaks от Декабрь 23, 2010, 14:00 почему же нет смысла?
как это можно сделать кроме как через мэппинг или QObject->sender()? Название: Re: QSignalMapper. вызов слота Отправлено: twp от Декабрь 23, 2010, 15:15 почему же нет смысла? Точно, в слоте можно получить отправителя сигнала через QObject::sender(), этот метод работает только в слоте, подоробнее лучше узнать в асистенте. Кроме того вместо dynamic_cast предпочтительней использовать qobject_castкак это можно сделать кроме как через мэппинг или QObject->sender()? Название: Re: QSignalMapper. вызов слота Отправлено: deaks от Декабрь 23, 2010, 15:21 именно тут на форуме читал про то, что надо вместо получения отправителя, надо использовать мэппинг, по крайней мере это отвечает идеологии mvc)
Название: Re: QSignalMapper. вызов слота Отправлено: twp от Декабрь 24, 2010, 11:57 Интресное мнение :) Вообще-то к идеалогии mvc механизм сигнал-слотов не относится, просто в Qt механизм оповещений представлений о изменениях в модели основан на этом механизме. Тем более не относится к mvc QSignalMapper. Это довольно узко-специализированный класс
|