Russian Qt Forum

Qt => Вопросы новичков => Тема начата: thechicho от Ноябрь 24, 2011, 13:51



Название: Как отличить QIcon
Отправлено: thechicho от Ноябрь 24, 2011, 13:51
хочу сделать как в плеере, кнопку play/stop
как отличить иконки?
if (iconka1)
   stop
else
    play


Название: Re: Как отличить QIcon
Отправлено: Пантер от Ноябрь 24, 2011, 14:03
Ужас. Зачем иконку-то проверять? Ну, выставляй хотя бы objectName у кнопки.


Название: Re: Как отличить QIcon
Отправлено: thechicho от Ноябрь 24, 2011, 14:07
кнопка одна, objectName установлен, допустим pushButtonStart. надо при нажатии и при определенных условиях менять иконку.
как?!  ???


Название: Re: Как отличить QIcon
Отправлено: madRoger от Ноябрь 24, 2011, 14:07
Можно завести флаг (переменную типа bool). При проигрывании устанавливать в true, при паузе false и проверять его.


Название: Re: Как отличить QIcon
Отправлено: Bepec от Ноябрь 24, 2011, 14:09
Упаси тебя боже иконку проверять :)

MadRoger дело советует.

По вопросу как отличить иконки - у Qicon есть cacheKey(), который собственно уникальный :)


Название: Re: Как отличить QIcon
Отправлено: thechicho от Ноябрь 24, 2011, 14:14
блин, видел же cacheKey()...
он на любом компе будет одинаков для иконки?

Код
C++ (Qt)
   if (ui->pushButtonStart->icon().cacheKey() == "4294967296") {
       ui->pushButtonStart->setIcon(iconStop);
   } else {
       ui->pushButtonStart->setIcon(iconPlay);
   }

если да, то то что нужно, сенкс.
если нет, то через флаг, сенкс.


Название: Re: Как отличить QIcon
Отправлено: Пантер от Ноябрь 24, 2011, 14:16
Не хардкодь, же. Ну, нельзя разве написать:

if (ui->pushButtonStart->icon().cacheKey() == iconPlay.cacheKey()) {
?


Название: Re: Как отличить QIcon
Отправлено: thechicho от Ноябрь 24, 2011, 14:18
ага :)
сделал, через флаг, благодарю за помощь.