Как известно, Qt предлагает разработчикам практически неограниченные возможности по созданию интерфейсов.
В большинстве случаев, если вы используете стандартные виджеты, внешний вид вашего приложения (и элементов его интерфейса) будет соответствовать внешнему виду вашей операционной системы.
Для этого в Qt есть система так называемых стилей — классов, отвечающих за отрисовку стандартных элементов интерфейса.
В этой статье мы попробуем создать свой стиль и применить его к простому приложению, чтобы получить красивую таблицу на основе виджетов.
QTableWidget .
Теоретическая часть
Итак, начнем с теории.В Qt есть абстрактный класс.
QStyle , отвечающий, как нетрудно догадаться, за стилизацию приложения.
От него наследуется ряд классов ( QWindowStyle , QMacStyle и т. д.), которые представляют собой стили, имитирующие стандартный внешний вид операционной системы.
Сделаем свой стиль для приложения по их образу и подобию.
Qt требует, чтобы пользовательские стили не наследовались напрямую от QStyle , но из одного из его классов-потомков.
В документации рекомендуется выбрать наиболее близкий к желаемому стиль системы и изменить его под свои нужды.
Мы унаследуем наш класс от не менее абстрактного, чем QStyle , сорт QCommonStyle .
Как рисовать элементы внутри стиля? Сорт QStyle имеет набор функций, имена которых начинаются со слова рисовать :
- DrawComplexControl()
- DrawControl()
- drawItemPixmap()
- drawItemText()
- рисоватьПримитив()
DrawComplexControl() используется для рисования составных виджетов, то есть тех, которые содержат несколько других виджетов.
Примером является QSpinBox , который, как нетрудно догадаться, реализует обычный SpinBox и состоит из поля ввода и двух маленьких кнопок:
DrawControl() рисует стандартные виджеты, такие как кнопки и поля ввода.
рисоватьПримитив() рисует так называемые примитивные элементы, например, рамки.
drawItemPixmap() И drawItemText() имеют вполне понятные имена и делают именно то, что от них можно ожидать.
Подробные описания всех функций, а также их аргументов очень легко найти в документации Qt, поэтому я не буду на этом останавливаться.
В нашем примере мы присвоим элементу стиль QTableWidget , который представляет собой обычную таблицу.
Стили для остальных элементов выполняются точно так же.
Начинать
Прежде всего, давайте создадим новый класс C++.При создании класса Qt услужливо предлагает нам написать его имя, а также имя класса, от которого мы хотим наследовать.
Назовем это для простоты мой стиль и указать наследование от QCommonStyle .
После этого Qt создаст для нас пару файлов (.
h и .
cpp), в которых для начала мы хотим получить что-то вроде этого: myStyle.h
Теги: #стили #Qt #C++ #программирование #интерфейсы #программирование #C++ #Qt#include <QCommonStyle> class myStyle : public QCommonStyle {
-
32 Января
19 Oct, 24 -
Колобки В Smf
19 Oct, 24 -
Открытое Письмо В Abbyy
19 Oct, 24