Български English Spanish Italian Magyar French [qt-devnet.developpez.com]

Създаване на стилове в QML

QML предоставя няколко механизъма за стилизиране на потребителския интерфейс. Представяме ви три често срещани подхода.

Подход 1: Собствен компонент

QML поддържа дефинирането на собствени компоненти [doc.qt.nokia.com]. По-долу, ние създаваме собственият компонент TitleText, който можем после да използваме в нашата програма, когато искаме заглавен текст. Ако изкаме да променим външният вид на всички заглавни текстове в нашият интерфейс, можем просто да редактираме TitleText.qml и промените ще се отразят навсякъде, където е използван.

  1. // TitleText.qml
  2. Text {
  3.     horizontalAlignment: Text.AlignHCenter
  4.     font.pixelSize: 50
  5.     color: "green"
  6. }
  7.  
  8. // употреба
  9. TitleText {
  10.     text: "Title 1"
  11. }

Подход 2: Допълнителен обект

При този подход, дефинираме Style обект, който съдържа колекцията от свойства, дефиниращи стила. Този обект е инстанциран в главният компонент, така че да е видим в цялото приложение.

  1. // Style.qml
  2. QtObject {
  3.     property int textSize: 20
  4.     property color textColor: "green"
  5. }
  6.  
  7. // главен компонент
  8. Rectangle {
  9.     ...
  10.     Style { id: style }
  11.     ...
  12. }
  13.  
  14. // употреба
  15. Text {
  16.     font.pixelSize: style.textSize
  17.     color: style.textColor
  18.     text: "Hello World"
  19. }

Подход 3: Хибриден (Style обект + собствен компонент )

При този подход, имаме Style обект, който се използва в нашият компонент.

  1. // Style.qml
  2. QtObject {
  3.     property int titleAlignment: Text.AlignHCenter
  4.     property int titleFontSize: 50
  5.     property color titleColor: "green"
  6. }
  7.  
  8. // главен компонент
  9. Rectangle {
  10.     ...
  11.     Style { id: style }
  12.     ...
  13. }
  14.  
  15. // TitleText.qml
  16. Text {
  17.     horizontalAlignment: style.titleAlignment
  18.     font.pixelSize: style.titleFontSize
  19.     color: style.titleColor
  20. }
  21.  
  22. // употреба
  23. TitleText {
  24.     text: "Title 1"
  25. }

Categories: