блог-форум о программировании

Вы не вошли.

#1 2017-11-20 16:35:58

Majestio
Администратор
Здесь с 2017-11-17
Сообщений: 73
Windows 10Firefox 57.0

Qt4 = Настройка виджетов с использованием таблиц стилей


Qt4 = Настройка виджетов с использованием таблиц стилей


Ссылка на документацию по стилям и свойствам.
При использовании таблиц стилей каждый виджет рассматривается как коробка, окруженная четырьмя вложенными друг в друга прямоугольниками: прямоугольник полей (margin rectangle), прямоугольник границ (border rectangle), прямоугольник заполнения (padding rectangle) и прямоугольник содержимого (content rectangle). Модель "коробки" описывает это более детально:

stylesheet-boxmodel.png

  • Поля располагаются за пределами границы

  • Граница отрисовывается между полями и заполнителем (padding)

  • Заполнитель располагается внутри границы, между границей и фактическим содержимым

  • Содержимое - это то, что останется от исходного виджета внутри "коробки"

Свойства margin, border-width и padding по умолчанию равны нулю. В этом случае все четыре прямоугольника (полей, границ, заполнения и содержимого) полностью совпадают.
Для задания фона виджета вы можете использовать свойство background-image. По умолчанию, фоновое изображение (background-image) отрисовывается только для области внутри границ. Это можно изменить используя свойство background-clip. Вы можете использовать свойства background-repeat и background-origin для управления повторяемостью и источником фонового изображения.
Фоновое изображение не масштабируется по размерам виджета. Чтобы предоставить "обложку" (skin) или масштабируемое в соответствии с размерами виджета фоновое изображение нужно использовать свойство border-image. Поскольку свойство border-image предоставляется как альтернатива фоновому изображению, в случае задания border-image задавать background-image не требуется. В том случае, когда заданы они оба, border-image отрисовывается поверх background-image.
В дополнение, свойство image можно использовать для отрисовки изображения поверх border-image. Заданное изображение не повторяется (tile) и не растягивается (stretch), а если его размер не совпадает с размерами виджета его выравнивание определяется свойством image-position. В отличие от background-image и border-image, в свойстве image можно указать изображение SVG, при этом это изображение автоматически масштабируется в соответствии с размерами виджета.
Этапы визуализации правила изложены ниже:

  • Устанавливается отсечение (clip) для всей операции визуализации (border-radius)

  • Отрисовывается фоновое изображение (background-image)

  • Отрисовывается изображение границы (border-image, border)

  • Отрисовывется изображение наложения (overlay) (image)

Субэлементы управления совместно используют взаимоотношения между предками и потомками. В случае QComboBox предком кнопки выпадающего списка является выпадающий список, а предком выпадающего списка - сам виджет. Субэлементы управления располагаются внутри своего родителя используя свойства subcontrol-position и subcontrol-origin. После расположения к субэлементам управления можно применить стиль используя модель "коробки".
В случае сложных виджетов, таких как QComboBox и QScrollBar, если одно свойство или субэлемент управления настраивается, то и все остальные свойства или субэлементы управления также должны настраиваться.

Список виджетов, допускающих применение стиля



QAbstractScrollArea
QCheckBox
QColumnView
QComboBox
QDateEdit
QDateTimeEdit
QDialog
QDialogButtonBox
QDockWidget
QDoubleSpinBox
QFrame
QGroupBox
QHeaderView
QLabel
QLineEdit
QListView
QListWidget
QMainWindow
QMenu
QMenuBar
QMessageBox
QProgressBar
QPushButton
QRadioButton
QScrollBar
QSizeGrip
QSlider
QSpinBox
QSplitter
QStatusBar
QTabBar
QTableView
QTableWidget
QTabWidget
QTextEdit
QTimeEdit
QToolBar
QToolBox
QToolButton
QToolTip
QTreeView
QTreeWidget
QWidget

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] CCBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.051 сек, 7 запросов выполнено - Использовано памяти: 2.18 Мбайт (Пик: 2.71 Мбайт) ]