Qt и UI Skinning - PullRequest
       1

Qt и UI Skinning

6 голосов
/ 21 января 2011

Я хотел бы посоветоваться с мудрецами здесь относительно Qt и скинов, узнать ваше мнение и наметить путь для моего развития.Мои требования следующие:

  1. Моему приложению Qt / C ++ (кроссплатформенный с версиями Mac, Windows и Linux) необходимо иметь модульные оболочки.

  2. Скин определяется как набор из одного или нескольких элементов: - Фоновая текстура окна - Внешний вид элементов управления пользовательского интерфейса, таких как поля редактирования, раскрывающиеся списки, переключатели, кнопки и т. Д. - Внешний вид «заголовка» окна,ручки изменения размера и т. д.

  3. Скины будут установлены вместе с установщиком приложения, что позволит пользователю выбрать, какой из них он / она хочет использовать.Пользователи должны иметь возможность менять скины на лету.

Можно ли перейти по маршруту QML?это должно быть на заказ и основано на простых ресурсах, встроенных в приложение?Любые советы по дизайну будут оценены.

Спасибо.

Ответы [ 3 ]

7 голосов
/ 22 января 2011

Если я вас правильно понял, тогда таблица стилей - лучший путь вперед.Вы можете создавать таблицы стилей, похожие на CSS, а затем передавать их в качестве параметра командной строки для вашего приложения или загружать при вызове для стилизации вашего приложения во время выполнения.Таким образом, вы можете создать несколько таблиц стилей, каждый из которых будет выглядеть по-разному и позволять пользователю загружать их по желанию.Поскольку это CSS, он не нуждается в каком-либо новом обучении, и вы можете оставить все свои стили вне исходного кода.

Вот список ресурсов, которые помогут вам быстро приступить к работе:

http://blog.qt.io/blog/2007/11/27/theming-qt-for-fun-and-profit/

http://doc.qt.io/qt-5/stylesheet.html

0 голосов
/ 21 января 2011

QML, IIUC, на самом деле не создает виджеты, в основном это касается макета GUI и т. Д. И т. Д.

QStyle используется для изменения внешнего вида.Это немного низкоуровневый и требует программирования, поэтому, если вы хотите загрузить различные созданные пользователем скины (из XML или около того), может быть сложно поддерживать обширный скиннинг.Цепные цвета и несколько предметов достаточно просты.(Возможно, кто-то еще сделал что-то, что вы могли бы использовать повторно ... не уверен.)

Для изменения виджетов используйте QStyle::polish().Вы можете использовать это, чтобы изменить фоновое изображение (если это окно верхнего уровня или определенного класса).Существует множество методов перерисовки, позволяющих изменить почти каждую часть каждого виджета.

Сохраните / загрузите стиль, используя QSettings, прочитав и установив нужный стиль сразу после QApplication, но до создания главного окна.

0 голосов
/ 21 января 2011

Я еще не играл с QML, но вы также можете создать собственную реализацию QStyle, которая поддерживает формат вашего ресурса. Обратите внимание, что при переходе по этому пути вы потеряете поддержку таблиц стилей.

Изменение заголовков окон немного сложнее, если вы хотите переносимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...