Russian Qt Forum

Qt => Вопросы новичков => Тема начата: wenny от Июнь 17, 2016, 12:58



Название: Реакции на нативные баттоны
Отправлено: wenny от Июнь 17, 2016, 12:58
Доброго времени суток. Никак не могу соорудить запрос гуглу. Как заменить реакции при активации этих баттонов? Спасибо.


Название: Re: Реакции на нативные баттоны
Отправлено: gil9red от Июнь 17, 2016, 13:00
Это системные кнопки. Вы можете нарисовать свои или переопределить события виджетов и там настроить свою логику

зы. не знаю как вам, а мне "баттоны" ассоциируют с хлебом, а не кнопками или buttons :D


Название: Re: Реакции на нативные баттоны
Отправлено: wenny от Июнь 17, 2016, 13:14
переопределить события виджетов и там настроить свою логику
Вот, я про это и спрашиваю. Как это сделать? Я хочу на сворачивалку повесить свое событие (хочу иконку в трей отправлять, а не на панель задач).

не знаю как вам, а мне "баттоны" ассоциируют с хлебом, а не кнопками или buttons :D
Нет, у меня ассоциации именно с кнопками. А у Вас, видимо, примерно так (;D):


Название: Re: Реакции на нативные баттоны
Отправлено: gil9red от Июнь 17, 2016, 13:29
Когда давно тут  (https://github.com/gil9red/NotesManager/blob/master/Manager/Manager.cpp#L513)делал такое:

Код
C++ (Qt)
void Manager::closeEvent( QCloseEvent * event )
{
   event->ignore();
 
   bool minimizeTrayWhenClosing = pageSettings->mapSettings[ "MinimizeTrayWhenClosing" ].toBool();
   if ( minimizeTrayWhenClosing )
       hide();
   else
       quit();
}
void Manager::changeEvent( QEvent * event )
{
   QEvent::Type type = event->type();
 
   if ( type == QEvent::WindowStateChange )
   {
       bool minimizeTrayWhenMinimizing = pageSettings->mapSettings[ "MinimizeTrayWhenMinimizing" ].toBool();
       if ( isMinimized() && minimizeTrayWhenMinimizing )
       {
           event->ignore();
           QTimer::singleShot( 0, this, SLOT( hide() ) );
           return;
       }
   }
 
   QMainWindow::changeEvent( event );
}


Название: Re: Реакции на нативные баттоны
Отправлено: PimenS от Июнь 17, 2016, 13:34
Можно еще через void QWidget::hideEvent(QHideEvent *event) отловить когда виджет сворачивается.


Название: Re: Реакции на нативные баттоны
Отправлено: wenny от Июнь 17, 2016, 13:54
Давайте проще: как вообще убить сворачивательный хлеб? Он вообще не нужен, по сути.


Название: Re: Реакции на нативные баттоны
Отправлено: gil9red от Июнь 17, 2016, 13:57
Написал же в changeEvent смотрите на isMinimized() -- значит окно было минимизировано.

Проверяете и если нужно убиваете окно, используя close


Название: Re: Реакции на нативные баттоны
Отправлено: wenny от Июнь 17, 2016, 13:59
Я понял. А саму кнопку дизакивировать можно?


Название: Re: Реакции на нативные баттоны
Отправлено: gil9red от Июнь 17, 2016, 14:02
Я понял. А саму кнопку дизакивировать можно?

Можно поиграться с setWindowFlags, или сделать через нативные функции


Название: Re: Реакции на нативные баттоны
Отправлено: wenny от Июнь 17, 2016, 14:20
Ваш пример завелся, спасибо