Programowanie C++ Qt4 w systemie Gnu-Linux/Malowanie po ekranie - Tablica informacyjna

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania

W tym miejscu chciałbym przedstawić prosty widget, który może posłóżyć za tablicę do wyświetlania pewnych danych. Założenia widgeta są następujące.

  1. Jedna publiczna funkcja ustawDane
  2. Widget będzie okienkiem o wymiarach 160X90 (proporcje ekranu panoramicznego)
  3. Widget będzie skalowany do full-screana

Na sam początek mały odręczny rysunek ekranu tak jak to sobie zaplanowałem.


Rysunek odręczny tablicy

Jak widzicie narysowana tablica będzie się składać z kilku pól, których współrzędne z grubsza są zaznaczone na kartce. Plan programowania jest następujący

  1. Aplikacja QT testująca widgeta składać się będzie z przycisku "pokaż tablicę".
  2. Klasa tablicy będzie składać się z dwóch plików "tablica.h" plik - nagłówkowy widgeta oraz "tablica.ccp" - plik implementacji
  3. Zdefiniujemy pięć obszarów o współrzędnych:
    • RecLab1 - punkt (3,3) rozmiar (60,39) - obszar na napis Licznik Główny
    • RecCount1 - punkt (80,3) rozmiar (77,39) - obszar,na wyświetlenie wartości licznika, ograniczony ramką
    • RecLab2 - punkt (3,48) rozmiar (55,39)
    • RecCount2 - punkt (60,48) rozmiar (75,39)
    • RecAlarm - punkt (140,60) rozmiar (15,15)

Jak krok po kroku napisać taką tablicę przedstawiam na Youtube. Zapraszam do zapoznania się z filmikiem.

http://www.youtube.com/watch?v=BgHFYGWSef4

W filmiku jest mały błąd. Otóż aby widget się skalował poprawnie jego rozmiar domowy, który zwraca metoda sizeHint(), powinien być identyczny z tym użytym do skalowania.

QSize sizeHint()const{
     return QSize(160,90) // rozmiar widgeta w pixelach. Bo proporcje ekranu to 16/9 
//kartka na której rysowałem widget też ma 16cm na 9cm 

}


void paintEvent(QPaintEvent *e){
//[...]
  p.scale(widh()/160,heigt()/90) // rysujem więc jakby w skali 1:1 a każda zmiana rozmiarów widgeta spowoduje przeskalowanie malunku
// w filmie było  p.scale(widh()/190,heigt()/90) i to ten błąd powodował brak malunku na pierwszym pokazie:)
}

Wrzucam jeszcze zdjęcia gotowej tablicy "trochę innej niż ta z filmu".


tablica informacyjna QT C++

Do pobrania[edytuj]

widget tablica wraz z kodem testującym

http://chomikuj.pl/mysiadziura/www.marekk.dreamhosters.com/TablicaTest,4928358657.zip(archive)