Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ponyatie_tablits_stiley.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
33.92 Кб
Скачать

Элементы стиля.

Элемент стиля - это графическая часть графического интерфейса пользователя. Виджет состоит из иерархии (или дерева) элементов стиля. Например, когда стиль получает запрос на отрисовку кнопки (например, из QPushButton), он отрисовывает метку (текст и пиктограмму), кромку кнопки и прямоугольник фокуса. Кромка кнопки, в свою очередь, состоит из рамки вокруг кромки и двух других элементов, которые будут отображаться позднее. Ниже приведена схематичная иллюстрация дерева элементов кнопки. Мы увидим реальное дерево для QPushButton когда перейдем к отдельным виджетам.

Виджеты необязательно отрисовывать запрашивая стиль для отрисовки только одного элемента. Виджеты могут сделать несколько вызовов стиля для отрисовки разных элементов. Примером является QTabWidget, который отрисовывает свои вкладки и фреймы по отдельности.

Имеется три типа элементов: простейшие элементы, управляющие элементы и сложные управляющие элементы. Элементы определены в перечислениях ComplexControl, ControlElement и PrimitiveElement. Значения каждого элемента перечисления имеет префикс для обозначения его типа: CC_ - для сложных элементов, CE_ - для элементов управления и PE_ - для простейших элементов. В следующих трех разделах мы увидим что определяют разные элементы и увидим примеры использующих их виджетов.

Описание класса QStyle содержит список этих элементов и их роли в стилевом оформлении (styling) виджетов. Мы увидим как их использовать когда применим стиль к отдельным виджетам.

На самом простом уровне стиль – это не что иное, как правило, указывающее броузеру, как выводить содержимое какого-то определенного HTML- или XHTML-тега.2 У каждого тега есть ряд ассоциированных с ним стилевых свойств, значения которых определяют, как этот тег воспроизводится броузером. Правило приписывает определенное значение одному или нескольким свойствам тега. Например, большинство тегов имеют свойство color, значение которого определяет цвет, который современные GUI-броузеры должны использовать при отображении содержимого тега. К числу других свойств относятся шрифт, интервал между строками, поля, рамки, громкость звука и тембр, которые будут детально рассмотрены ниже в этой главе.

Существует три способа присоединения стиля к тегу: встроенные в теги стили, стили документа и внешние таблицы стилей. Вы можете использовать одну или несколько таблиц для документа. Броузер либо объединяет определения каждого из стилей, либо переопределяет характеристики стиля для содержимого тега. Заимствованные из этих

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

Здесь мы обсудим основы синтаксиса каждого из трех типов таблиц стилей. А в конце главы остановимся на вопросах уместности употребления встроенных, документных и внешних таблиц стилей.

Простейшие элементы

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

Элементы управления

Элемент управления выполняет действие или отображает информацию пользователю. Примеры элементов управления - это кнопки, флажки и заголовки секций в табличных и древовидных представлениях. Элементы управления необязательно являются завершенными виджетами как, например, кнопки, но могут быть также частью виджетов, например, вкладки набора вкладок (tab bar) и ползунки полосы прокрутки. Они отличаются от простейших элементов тем, что не являются пассивными, но выполняют функцию по взаимодействию с пользователем. Элементы управления, состоящие из нескольких элементов, часто используют стиль для вычисления ограничивающих прямоугольников элементов. Доступные субэлементы определены в перечислении SubElement. Это перечисление используется только для вычисления ограничивающих прямоугольников, а субэлементы как таковые не являются графическими элементами, способными быть отрисованными, как простейшие, управляющие и сложные элементы.

Сложные элементы управления

Сложные элементы управления содержат субэлементы управления (sub controls). Поведение сложных элементов управления по-разному зависит от того, где пользователь воздействовал на них с помощью мыши и какую клавишу нажал. Это зависит от субэлемента управления (или нескольких), над которыми находится мышь или получено нажатие кнопки мыши. Примеры сложных элементов управления - полосы прокрутки и комбинированные списки выбора. С полосой прокрутки вы можете использовать мышь для перемещения ползунка и нажимать на кнопки сдвига на одну строку вверх и вниз. Доступные субэлементы управления определены в перечислении SubControl.

В дополнение к отрисовке, стиль должен предоставить виджетам информацию о том, в каком субэлементе (или нескольких) было нажата кнопка мыши. Например, QScrollBar нуждается в знании того, нажал ли пользователь на ползунок, бороздку (groove) ползунка или одну из кнопок.

Обратите внимание на то, что субэлементы управления - это не то же самое, что управляющие элементы, описываемые в предыдущем разделе. Вы не можете использовать стиль для отрисовки субэлементов управления; стиль будет только вычислять ограничивающий прямоугольник, в котором субэлементы управления должны быть отрисованы. Тем не менее, обычно сложные элементы управления используют элементы управления и простейшие элементы для отрисовки своих субэлементов управления, что часто используется встроенными стилями Qt, а также стилем Java. Например, стиль Java использует PE_IndicatorCheckBox для отрисовки флажка в групповых рамках (которые являются субэлементами управления CC_GroupBox). Некоторые субэлементы управления имеют эквивалентный элемент управления, например, ползунок полосы прокрутки (SC_SCrollBarSlider и CE_ScrollBarSlider).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]