Programowanie C++ Qt4 w systemie Gnu-Linux/Malowanie po ekranie - Tablica informacyjna
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.
- Jedna publiczna funkcja ustawDane
- Widget będzie okienkiem o wymiarach 160X90 (proporcje ekranu panoramicznego)
- Widget będzie skalowany do full-screana
Na sam początek mały odręczny rysunek ekranu tak jak to sobie zaplanowałem.
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
- Aplikacja QT testująca widgeta składać się będzie z przycisku "pokaż tablicę".
- Klasa tablicy będzie składać się z dwóch plików "tablica.h" plik - nagłówkowy widgeta oraz "tablica.ccp" - plik implementacji
- 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".
Do pobrania
[edytuj]widget tablica wraz z kodem testującym
http://chomikuj.pl/mysiadziura/www.marekk.dreamhosters.com/TablicaTest,4928358657.zip(archive)