grig_p
21 октября 2021 г. 14:26

Применение стилей *.qss к собственным виджетам.

Здравствуйте!
Я пишу свой виджет, который отображает некоторые данные и к стандартным виджетам не имеет никакого отношения, кроме того, что является подклассом QWidget.
Есть у меня в программе файл стиля qss который я применяю к окну, на котором лежит разрабатываемый виджет.

  1. QFile style(AppDefines::MainStyleSheetFile);
  2. style.open( QFile::ReadOnly );
  3. QString stlDetail(style.readAll() );
  4. setStyleSheet(stlDetail);

Стиль выглядит так:

  1. ...
  2. QFrame#frTestKindButtons
  3. {
  4. background-color: rgb(205, 209, 214);
  5. }
  6.  
  7. QFrame#frTitle
  8. {
  9. font-size: 11pt;
  10. background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(1, 59, 86), stop: 0.5 rgb(2, 112, 164), stop: 1 rgb(1, 59, 86));
  11. }
  12.  
  13. QCheckBox
  14. {
  15. font-size: 11pt;
  16. color: rgb(32,88,103);
  17. }
  18.  
  19. QGroupBox
  20. {
  21. font-size: 11pt;
  22. color: rgb(32,88,103);
  23. }
  24. ...

Я бы хотел в этом файле стиля создать раздел для моего нового виджета и определить в нем некоторые цвета и шрифты, например:

  1. MyDiag
  2. {
  3. sig1-color: rgb(20, 30, 40);
  4. sig2-color: rgb(40, 20, 30);
  5. }
  6.  

И потом в виджете получать данные к этим цветам и использовать их.
Встают вопросы.
1. Могу ли я это делать?
2. Как в виджете получить данные о цветах?

Заранее благодарен за ответ.

2

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

6
o
  • 21 октября 2021 г. 18:07
  • (ред.)

Добрый день.

  1. sig1-color: rgb(20, 30, 40);
  2. sig2-color: rgb(40, 20, 30);

Что это?

    grig_p
    • 21 октября 2021 г. 18:33

    Здравствуйте!
    Я бы хотел в виджете использовать некоторые свои свойства для его элементов.
    Задаю в коде виджета так:

    1. Q_PROPERTY(QColor sig1_color READ sig1Color WRITE setSig1Color)
    2.  
    3. void setSig1Color(const QColor color) {m_sig1Color = color;}
    4. QColor sig1Color() const {return m_sig1Color;}
    5.  
    6.  

    В qss файле:

    1. MyDiag
    2. {
    3. sig1-color: rgb(20, 30, 40);
    4. }

    А в выводе пишет: "Unknown property sig1_color"
    Что я делаю не так?

      o
      • 22 октября 2021 г. 3:27
      • (ред.)
      • Ответ был помечен как решение.

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

        o
        • 22 октября 2021 г. 3:31

        или взять код отсюда пример

        переписать его под свои нужды

          grig_p
          • 22 октября 2021 г. 13:07

          Вот спасибо большое! Это то, что было нужно. Я сделал почти все так, но следовало в qss файле написать:

          1. MyDiag
          2. {
          3. qproperty-sig1_color: rgb(20, 30, 40);
          4. }

          Еще раз большое спасибо за пример!

            o
            • 22 октября 2021 г. 13:34

            wellcome)

              Комментарии

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