Kurs Qt – Część 5 – Layout

Matthew @ 2009-11-27 — Kategorie: Kurs Qt, Programowanie, Qt, Techblog

Kolejna część kursu Qt. Tym razem zajmiemy się layoutami, które pozwolą nam uporządkować widgety w oknach naszych aplikacji. Przy okazji załatwią nam sprawę „ładnego” wyglądu okna w przypadku jego rozciągania.

Używanie layoutów w Qt nie jest jakoś szalenie trudne. Ot tworzymy widget, dodajemy do niego layout, na layout dodajemy kolejne widgety i zależnie od typu layoutu nam się ładnie rozkładają po całej powierzchni. Do wyboru mamy:

  • QVBoxLayout – layout pionowy,
  • QHBoxLayout – poziomy,
  • QGridLayout – siatka,
  • QFormLayout – dwukolumnowy, do dodawania etykiety wraz z odpowiadającą jej kontrolką.

Zajmijmy się najpierw QHBoxLayout. Da nam to obraz czego można się spodziewać (pominę plik main.cpp, chyba już każdy potrafi go sam zrobić? ;)):

Pewną niewiadomą może być QSpacerItem. Służy on jako puste miejsce rozdzielające poszczególne elementy (lub jak wypełniacz komórek dla grida). Polecam poeksperymentować z wartościami QSpacerItema żeby uzyskać różne efekty rozłożenia widgetów. W linijkach od 17. do 20. mamy dodawanie kolejnych kontrolek do layoutu. Jak widać – żadna filozofia.

Trochę ciekawej wygląda zabawa z QGridLayout. Ponieważ kod nagłówka różni się niewiele (QGridLayout zamiast QHBoxLayout), więc pozwolę sobie na pokazanie tylko pliku z definicją klasy Window:

Różnica polega na sposobie dodawania elementów. Możemy dodatkowo ustalić w której kolumnie i wierszu ma się znaleźć dany widget czy spacer (nie musimy podawać wcześniej liczby kolumn i wierszy, Qt samo odpowiednio dostosuje QtGridLayout) oraz wyrównanie elementu w komórce.

To tyle tym razem. Z okazji nadchodzących Mikołajek postaram się przygotować coś z nadchodzącego Qt 4.6. Jak znajdę odpowiednie ilości motywacji to może nawet zrobię 3 części kursu o ciekawych zastosowaniach Qt 4.6. ;]

Komentarze:

Witam,

Czy zawsze w puste ‚komórki’ w QGridLayout trzeba wstawiać QSpacerItem?

btw, zaje…fajny tutorial!!!

Pozdrawiam,
Mateusz

Dodaj komentarz:

 

Subscribe without commenting