s
25 декабря 2019 г. 20:01

QPushButton CSS

QPushButton

Добрый день!

Подскажите, пожалуйста, как реализовать смену цвета кнопки при ее удержании, а при отпускании должен вернуться изначальный цвет.
На данный момент, я лишь смог изменить ее цвет по нажатию, а изнчальный цвет по повторному нажатию:

  1. {
  2. ui->setupUi(this);
  3.  
  4. calbr = new QPushButton();
  5. }
  6. ....
  7.  
  8. calbr = static_cast<QPushButton*>(sender());
  9. int state = calbr->property("current_state").toInt();
  10.  
  11. if(state ==0)
  12. {
  13. calbr->setStyleSheet("background-image: url(:/pressed_btn/blocks/pressed btn/main calibration pressed.png)");
  14. calbr->setProperty("current_state", 1);
  15. }
  16. else
  17. {
  18. calbr->setStyleSheet("background-image: url(:/background/blocks/error.jpg)");
  19. calbr->setProperty("current_state", 0);
  20. }

Идея в том, чтобы при нажатии ее фон менялся на более светлый, для визуального удобства, в качестве фона использую отрисованные изображения.

Сасибо!

3

Вам это нравится? Поделитесь в социальных сетях!

2
nayk1982
  • 26 декабря 2019 г. 19:25

Добрый день!
Насколько я помню, у QPushButton можно указать разные состояния один раз заполнив styleSheet, а не каждый раз при нажатии. Например в констукторе формы прописать:

  1. setStyleSheet(
  2. "QPushButton#buttonName { background: white; } "
  3. "QPushButton#buttonName:hover { background: yellow; } "
  4. "QPushButton#buttonName:pressed { background: red; } "
  5. );
  6.  
    s
    • 27 декабря 2019 г. 18:33
    • Ответ был помечен как решение.

    Я уже сам решил проблему, добавив слот на состояние Released. Спасибо за ответ!

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь