Magyar English Spanish Italian

Stílustervezés QML-ben

A QML számos módot kínál a felhasználói felület megtervezésére. Alant a három leggyakoribb látható.

1. megközelítés: Egyedi komponensek

A QML támogatja a saját, egyedi Komponensek [doc.qt.nokia.com] létrehozását. Alant egy TitleText, azaz címszöveg komponenst hozunk létre, melyet később akármikor felhasználhatunk, ha az UI-unknak szüksége van egy címre. Ha meg szeretnénk változtatni az összes címszöveget a felhasználói felületünkön, akkor elég csak a TitleText.qml fájlt módosítani, és a változások életbe is lépnek.

  1. // TitleText.qml
  2. Text {
  3.     horizontalAlignment: Text.AlignHCenter
  4.     font.pixelSize: 50
  5.     color: "green"
  6. }
  7.  
  8. // in use
  9. TitleText {
  10.     text: "Title 1"
  11. }

2. megközelítés: Stílus Objektum

Ezt a megközelítést használva egy Style objektumot definiálunk, amely tartalmazza a stílust meghatározó tulajdonságokat. Ez az objektum a gyökér komponensben kerül példányosításra, így elérhető lesz bárhonnan az alkalmazásunkban.

  1. // Style.qml
  2. QtObject {
  3.     property int textSize: 20
  4.     property color textColor: "green"
  5. }
  6.  
  7. // gyökér komponens
  8. Rectangle {
  9.     ...
  10.     Style { id: style }
  11.     ...
  12. }
  13.  
  14. // felhasználás
  15. Text {
  16.     font.pixelSize: style.textSize
  17.     color: style.textColor
  18.     text: "Hello World"
  19. }

3. megközelítés: Hibrid (Stílus objektum + egyedi Komponens)

Ennél a módszernél van egy Style objektumunk, melyet a saját egyedi komponensünk fog használni.

  1. // Style.qml
  2. QtObject {
  3.     property int titleAlignment: Text.AlignHCenter
  4.     property int titleFontSize: 50
  5.     property color titleColor: "green"
  6. }
  7.  
  8. // gyökér komponens
  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. // felhasználás
  23. TitleText {
  24.     text: "Title 1"
  25. }

Categories: