grig_p
Oct. 21, 2021, 2:26 p.m.

Применение стилей *.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

Do you like it? Share on social networks!

6
o
  • Oct. 21, 2021, 6:07 p.m.
  • (edited)

Добрый день.

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

Что это?

    grig_p
    • Oct. 21, 2021, 6:33 p.m.

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

    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
      • Oct. 22, 2021, 3:27 a.m.
      • (edited)
      • The answer was marked as a solution.

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

        o
        • Oct. 22, 2021, 3:31 a.m.

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

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

          grig_p
          • Oct. 22, 2021, 1:07 p.m.

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

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

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

            o
            • Oct. 22, 2021, 1:34 p.m.

            wellcome)

              Comments

              Only authorized users can post comments.
              Please, Log in or Sign up
              • Last comments
              • AK
                April 1, 2025, 11:41 a.m.
                Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
              • Evgenii Legotckoi
                March 9, 2025, 9:02 p.m.
                К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
              • VP
                March 9, 2025, 4:14 p.m.
                Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
              • ИМ
                Nov. 22, 2024, 9:51 p.m.
                Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
              • Evgenii Legotckoi
                Oct. 31, 2024, 11:37 p.m.
                Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup