Qt:Документация 4.3.2/stylesheet-customizing

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск
40px Внимание: Актуальная версия перевода документации находится здесь

__NOTOC__

Image:qt-logo.png

Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

Image:trolltech-logo.png

[Previous: Qt Designer Integration ] [ Contents ] [Next: Qt Style Sheets Reference ]

Настройка Qt виджетов, используя таблицы стилей

When using style sheets, every widget is treated as a box with four concentric rectangles: the margin rectangle, the border rectangle, the padding rectangle, and the content rectangle. The box model describes this in further detail.

Модель 'коробки' (The Box Model)

The four concentric rectangles appear conceptually as below:

Файл:Stylesheet-boxmodel.png

  • The margin falls outside the border.
  • The border is drawn between the margin and the padding.
  • The padding falls inside the border, between the border and the actual contents.
  • The content is what is left from the original widget or subcontrol once we have removed the margin, the border, and the padding.

The margin, border-width, and padding properties all default to zero. In that case, all four rectangles (margin, border, padding, and content) coincide exactly.

You can specify a background for the widget using the background-image property. By default, the background-image is drawn only for the area inside the border. This can be changed using the background-clip property. You can use background-repeat and background-origin to control the repetition and origin of the background image.

A background-image does not scale with the size of the widget. To provide a "skin" or background that scales along with the widget size, one must you the border-image. Since the border-image property provides an alternate background, it is not required to specify a background-image when border-image is specified. In the case, when both of them are specified, the border-image draws over the background-image.

In addition, the image property may be used to draw an image over the border-image. The image specified does not tile or stretch and when its size does not match the size of the widget, it's alignment is specified using the image-position property. Unlike background-image and border-image, one may specify a SVG in the image property, in which case the image is scaled automatically according to the widget size.

The steps to render a rule are as follows:

  • Set clip for entire rendering operation (border-radius)
  • Draw the background (background-image)
  • Draw the border (border-image, border)
  • Draw overlay image (image)

Sub-Controls

A widget is considered as a heirarchy (tree) of subcontrols drawn on top of each other. For example, the QComboBox draws the drop-down sub-control followed by the down-arrow sub-control. A QComboBox is thus rendered as follows:

  • Render the QComboBox { } rule
  • Render the QComboBox::drop-down { } rule
  • Render the QComboBox::down-arrow { } rule

Sub-controls share a parent-child relationship. In the case of QComboBox, the parent of down-arrow is the drop-down and the parent of drop-down is the widget itself. Sub-controls are positioned within their parent using the subcontrol-position and subcontrol-origin properties.

Once positioned, sub-controls can be styled using the the box model.

[Previous: Qt Designer Integration ] [ Contents ] [Next: Qt Style Sheets Reference ]



Copyright © 2007 Trolltech Trademarks
Qt 4.3.2