nayk1982Сәуір 20, 2018, 10:03 Т.Қ.
Темы оформления (скины) для приложения
Здравствуйте. Пытаюсь реализовать изменение скинов для приложения. Есть файл ресурсов global.qrc
<RCC> <qresource prefix="/style"> <file>style.qss</file> </qresource> <qresource prefix="/png"> <file>btn/1.png</file> <file>btn/2.png</file> <file>btn/3.png</file> ... </qresource> </RCC>
Этот файл подключается к проекту в .pro
RESOURCES += global.qrc
Так же есть несколько внешних файлов с ресурсами: skin1.skin, skin2.skin, skin3.skin, собранных через rсс:
rcc.exe -binary skin1.qrc -o skin1.skin
Структура файла
skin1.qrc
полностью повторяет
global.qrc
, но у каждого скина свои картинки и стиль оформления .qss
В приложении используется графика из ресурсов как обычно:
":/png/btn/1.png"
. После запуска видно значки из
global.qrc
- все в норме.
Теперь по сигналу, например при нажатии кнопки, подгружается внешний файл ресурсов:
void MainWindow::on_pushButton_Skin1_click() { // Полный путь файла ресурсов: QString skinFile = path + "skin1.skin"; // Загрузка if (QResource::registerResource(skinFile)) { QFile styleF(":/style/style.qss"); // Применение стиля: if(styleF.exists() && styleF.open(QFile::ReadOnly)) { setStyleSheet( QString( styleF.readAll() )); } } else { // Не удалось загрузить ... } }
Таблица стилей .qss применяется нормально, а вот значки на кнопках остаются из
qlobal.qrc
.
Вопрос: Как-нибудь можно после загрузки внешнего файла ресурсов указать приоритет, чтобы сначала проверялся путь из внешнего ресурса
skin1
, а потом из
global.qrc
? И как заставить все контролы перегрузить свои значки, если это нужно?
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
OI
- Ora Iro
- Жел. 24, 2024, 6:38 Т.Ж.
C++ - Тест 001. Первая программа и типы данных
- Нәтиже:40ұпай,
- Бағалау ұпайлары-8
AD
- Akiv Doros
- Қар. 11, 2024, 2:58 Т.Қ.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:50ұпай,
- Бағалау ұпайлары-4
m
- molni99
- Қаз. 26, 2024, 1:37 Т.Ж.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:80ұпай,
- Бағалау ұпайлары4
Соңғы пікірлер
ИМ
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
WD
Weave & Decor Weave Decor Where passion for textiles meets innovative design. We specialize in manufacturing a diverse range of high-quality bed sheets, from classic to contemporary, using premium fa…
Weave DecorЖел. 28, 2024, 3:18 Т.Ж.
Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. У меня есть Представление QTreeView и древовидная модель QStandardItemModel подключенная к представлению. Итемы в модели QStandardItem. В разных ветках дерева могут быть элементы с одинаковым им…
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
t
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
NSProjectМаусым 4, 2022, 3:49 Т.Ж.
Добрый день!
Так и есть, графика, установленная через стили, меняется как надо. Насчет разных префиксов ресурсов тоже была мысль, но проблема в том, что приложение использует плагины, в которых тоже есть виджеты и кнопки со значками. В плагинах я не могу ничего изменить. Пока сделал так: поменял значки на нейтральные (белые, оттенки серого) которые сочетаются с разными цветами. Стили загружаются нормально и нужные цвета применяются и для приложения и для плагинов.
Как вариант, ещё можно написать C++ классы helper`ы, которые будут дополнять базовый stylesheet, устанавливать иконки для классов плагинов.
И когда устанавливаете стили, то делать конкатенацию остальных стилей с этими специальными дополнениями.
По идее же плагины воспринимают стили, а если они имеют кастомные классы, то и соответствующий stylsheet можно написать для этих классов.