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

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

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

    QFile style(AppDefines::MainStyleSheetFile);
    style.open( QFile::ReadOnly );
    QString stlDetail(style.readAll() );
    setStyleSheet(stlDetail);

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

...
QFrame#frTestKindButtons
{
    background-color: rgb(205, 209, 214);
}

QFrame#frTitle
{
    font-size: 11pt;
    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));
}

QCheckBox
{
    font-size: 11pt;
    color: rgb(32,88,103);
}

QGroupBox
{
    font-size: 11pt;
    color: rgb(32,88,103);
}
...

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

MyDiag
{
    sig1-color: rgb(20, 30, 40);
    sig2-color: rgb(40, 20, 30);
}

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

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

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

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

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

Добрый день.

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

Что это?

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

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

        Q_PROPERTY(QColor sig1_color READ sig1Color WRITE setSig1Color)
    
        void setSig1Color(const QColor color) {m_sig1Color = color;}
        QColor sig1Color() const {return m_sig1Color;}
    
    
    

    В qss файле:

    MyDiag
    {
        sig1-color: rgb(20, 30, 40);
    }
    

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

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

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

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

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

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

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

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

          MyDiag
          {
              qproperty-sig1_color: rgb(20, 30, 40);
          }
          

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

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

            wellcome)

              Комментарии

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

              Qt - Тест 001. Сигналы и слоты

              • Результат:84баллов,
              • Очки рейтинга4
              Ua

              Qt - Тест 001. Сигналы и слоты

              • Результат:42баллов,
              • Очки рейтинга-8
              ОК

              Qt - Тест 001. Сигналы и слоты

              • Результат:47баллов,
              • Очки рейтинга-6
              Последние комментарии
              ИМ
              Игорь Максимов22 ноября 2024 г. 21:51
              Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
              Evgenii Legotckoi
              Evgenii Legotckoi31 октября 2024 г. 23:37
              Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
              A
              ALO1ZE19 октября 2024 г. 17:19
              Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
              ИМ
              Игорь Максимов5 октября 2024 г. 16:51
              Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
              d
              dblas55 июля 2024 г. 20:02
              QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
              Сейчас обсуждают на форуме
              f
              firstlunoxod15 февраля 2025 г. 13:46
              Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
              Дмитрий
              Дмитрий3 февраля 2025 г. 16:24
              Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
              NW
              Nayo Wai30 января 2025 г. 19:22
              не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
              n
              nkly3 января 2025 г. 12:52
              Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
              M
              Marsel17 августа 2023 г. 0:26
              OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

              Следите за нами в социальных сетях