Russian Qt Forum

Qt => Вопросы новичков => Тема начата: wenny от Июль 01, 2016, 13:25



Название: Двойной клик левой кнопкой мыши по трею
Отправлено: wenny от Июль 01, 2016, 13:25
Доброго времени суток. Хочу разворачивать окно при двойном клаце по трейной иконке. Соорудил следующее:
Код
C++ (Qt)
void TrayWindow::handleDoubleClick( QSystemTrayIcon::ActivationReason reason )
{
   //if( reason == QSystemTrayIcon::Trigger )  //если нажато левой кнопкой
   if ( reason == QSystemTrayIcon::DoubleClick ) {
       this->show();
   } else {
       this->hide();
   }
}

Я могу по отдельности отловить клик левой кнопкой и двойной клик любой - левой или правой. Вопрос: как мне зафиксировать именно даблклик левой кнопкой? Спасибо.


Название: Re: Двойной клик левой кнопкой мыши по трею
Отправлено: gil9red от Июль 01, 2016, 13:39
А QSystemTrayIcon::DoubleClick не работает что ли?


Название: Re: Двойной клик левой кнопкой мыши по трею
Отправлено: wenny от Июль 01, 2016, 13:47
Вы правы, работает.


Название: Re: Двойной клик левой кнопкой мыши по трею
Отправлено: gil9red от Июль 01, 2016, 13:49
 :)


Название: Re: Двойной клик левой кнопкой мыши по трею
Отправлено: wenny от Июль 01, 2016, 15:29
Дабы топ зря не пропадал, подскажите, пожалуйста, как в ручном режиме назначить QAction'у слот? Текст и иконку назначаю, а метод для слота найти не могу :(

Код
C++ (Qt)
connectionMenuItem->setText( "Отключиться" );
connectionMenuItem->setIcon( QIcon( ":/disconnect.png" ) );


Название: Re: Двойной клик левой кнопкой мыши по трею
Отправлено: gil9red от Июль 01, 2016, 15:56
Дабы топ зря не пропадал, подскажите, пожалуйста, как в ручном режиме назначить QAction'у слот? Текст и иконку назначаю, а метод для слота найти не могу :(

Код
C++ (Qt)
connectionMenuItem->setText( "Отключиться" );
connectionMenuItem->setIcon( QIcon( ":/disconnect.png" ) );


Используйте такую запись:
connect(connectionMenuItem, SIGNAL(triggered()), this, SLOT(<ваш_слот>));

Ну, или новый механизм с с++11:
connect(connectionMenuItem, &QAction::triggered, this, &<ваш_слот>);

у меня (mingw 4.9.2), в принципе, и так компилирует:
connect(connectionMenuItem, QAction::triggered, this, <ваш_слот>);

зы. промахнулся при клике на Цитировать, попав на Изменить, поэтому не пугайтесь, что у вас такая приписка осталась :)


Название: Re: Двойной клик левой кнопкой мыши по трею
Отправлено: wenny от Июль 01, 2016, 16:51
А как очистить/заменить коннект?


Название: Re: Двойной клик левой кнопкой мыши по трею
Отправлено: gil9red от Июль 01, 2016, 17:29
А как очистить/заменить коннект?

А погуглить или посмотреть в доку? :)
если есть connect, то есть и disconnect

Но можно добавить в слот флаг, который разрешает/запрещает выполняться


Название: Re: Двойной клик левой кнопкой мыши по трею
Отправлено: wenny от Июль 01, 2016, 19:39
Гуглил, но тока вот с божьей (т.е. Вашей :D) помощью наконец довел до конца это действо :)