Custom statusbar

2012.07.25. 13:10 | arabiata | Szólj hozzá!

Címkék: statusbar Qdialog QVBoxLayout

Statusbar alapban csak mainwindow-ban van, de nekünk kellene dialog ablakba is. Elméletileg egy layout-ban jelenítjük meg a statusbar-t.

Íme a nagyon bonyolult kód:

bar = new QStatusBar();
1. bar->setSizeGripEnabled(FALSE);
2. QVBoxLayout *statusbar_layout = new QVBoxLayout(this);
3. statusbar_layout->setAlignment(Qt::AlignBottom | Qt::AlignVCenter);
4. statusbar_layout->setContentsMargins(0,0,0,0);
5. statusbar_layout->addWidget(bar);
6. bar->clearMessage();
7. bar->setStyleSheet(GRAY_BORDER);

1. Ne akarja a user átméretezni a statusbar-t

2. Létrehozzuk a layout-ot, ami tartalmazni fogja a statusbar-t. Ezt designer-ben is megtehetnénk, de így csak be kell másolni a constructor-ba a fenti kódot, és nem kell illesztgetni a form-on.

3. Letesszük alulra teljes szélességben a layout-ot.

4. Gyárilag 11pixel margót hagy minden oldalon a rendszer, ez most nekünk nem kell.

5. No comment.

6. Ha valami szemét maradt a memóriában, azt kisöpörjük.

7.  GRAY_BORDER = #define GRAY_BORDER "QStatusBar {border: 1px solid gray;}" Így nem kell mindig újra definiálni a keretet. Ha módosítani kell, akkor is egyszerűbb egy helyen átírni, mint az összes fom-nál. A #define részt én egy közös header-be tettem (.h), és beforgatom minden osztályba, ahol kell

És a feszítő kérdés, hogy mi a nyákért nem egy sima QLabel-el csináltam meg az egészet? Mert a statusbar->showMessage utasítással külön timer vezérlése nélkül is tudunk meghatározott ideig üzenetet megjeleníteni.

Az eredmény:

Itt a vége, fuss el véle.

Legközelebb QTableView frissítése, úgy, hogy a header is mgmarad.

A bejegyzés trackback címe:

https://qtqt.blog.hu/api/trackback/id/tr544677068

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása