Ellenőrző elhelyezése widgetek
Qt három fő módja, hogy ellenőrizzék a gyermekek elhelyezéséről widgetek formában: abszolút pozicionálás, manuális elhelyezését és konfiguráció-menedzsment. Úgy véljük, mindegyikük példaként párbeszéd „Find File” ábrán látható 6.1.

6.1 ábra. Dialog "Find File".
Abszolút pozicionálás - ez a „hálátlan” eljárás forgalomba kütyü. Ezzel a megközelítéssel a helyzetét és méretét widgetek szorosan varrjuk a programot, ami általában együtt jár a fix méretű a forma is. Vessen egy pillantást a tervező FindFileDialog párbeszéd. amely azon az elven alapul az abszolút pozicionálás: Abszolút pozicionálás számos hátránya van. A fő hátránya - a képtelenség, hogy átméretezni az ablakot. A másik hátránya: a feliratokat nem illeszkednek a megadott méret, ha a felhasználó kiválasztott egy nagy betűméretet, vagy ha az alkalmazás felület már más nyelvre lefordítani. Ezen túlmenően, ez a megközelítés megköveteli tőlünk, hogy végre fáradságos munka kiszámításának helyzetét és méretét kütyü.
A kézi vezérlés elhelyezése kütyü, mi kell még, hogy meghatározza a helyzetét az alkatrészeket, a forma, hanem a mérete az méretével arányosan az ablakon. Ezt úgy lehet elérni átfedés miatt eseménykezelő resizeEvent () a formában, amelyben lehet számolni, és meghatározza az új dimenzióit gyermek modulokat:
A kivitelező, mi meg a minimális mérete 215 x 170 formáját, és a kezdeti méret a 365 x 220. A processzor resizeEvent (), amely új dimenzióit a kütyü, amikor az ablak átméretezésekor.
Mint ahogy az abszolút helymeghatározás, manuális elhelyezését igényli a programozó az előzetes számítás bizonyos állandók, amelyeket aztán szorosan összevarrják a programkódot. Írásban ilyen programok egy fárasztó feladat, különösen akkor, ha majd meg kell változtatni a design formákat. Mint korábban, a kockázat is, hogy valamilyen írást a forma nem illik a kijelölt helyre. Ezt el lehet kerülni, mivel az „ideális” méret a widget, de ez tovább bonyolítja a kódot.

6.2 ábra. Dialog "Find File" méretezhető.
A legjobb megoldás kütyü helyezni a forma használható Qt elrendezését vezetők. Ők biztosítják a megfelelő méretű alapértelmezés szerint minden típusú modul, és figyelembe veszi az „ideális” méret mindegyik, ami viszont függ a méret, stílus, és megjeleníti a tartalmát a hangerőt. Ezen túlmenően, az elrendezés menedzserek vegye figyelembe a minimális és maximális, és automatikusan módosítja a helyét a widget a változó a betűtípust, a tartalmát, vagy ablak méretét.
Qt háromféle elrendezés menedzserek: QHBoxLayout. QVBoxLayout és QGridLayout. Ez leszármazottja osztályok QLayout. amely végrehajtja az alapvető irányítási módszereket elhelyezést. Mindhárom osztály teljes mértékben támogatja Qt Designer-én, és azt is lehet használni, ha írni a kódot kézzel. Mindkét lehetőség használata arra a 2. fejezetben bemutattuk.
Az alábbiakban egy designer FindFileDialog. amely felhasználja elhelyezés vezetők:
komponens elhelyezése formájában ellenőrzött QHBoxLayout. QGridLayout egy és egy QVBoxLayout. QGridLayout QVBoxLayout és elrendezve egymás mellett nővérek belsejében QHBoxLayout. A keret alakja köré, amelynek szélessége 11 pixel, a távolság között a gyermek kütyü - 6 pixel.

6.3 ábra. Az elrendezés a dialógus „Find File”.
QGridLayout működik, mint egy lapos rács sejteket. QLabel. a bal felső sarokban a területen, vette cella (0, 0), és a megfelelő QLineEdit - (0, 1). QCheckBox egyesíti két oszlop, és elfoglal egy cella (2, 0) és (2, 1). QListView és QLabel. alján található, csak hogy két sejt. Hívjon addMultiCellWidget () szintaxisa a következő: hol a widget - ez almodult, telt ez a layout manager, ROW1, col1 - a bal felső cella által elfoglalt widget és ROW2, col2 - jobb alsó cella.
Ugyanez a párbeszéd segítségével lehet létrehozni egy vizuális építő Qt Designer. Egy példa a dolgozó vizuális építő, megbeszéltük a 2. fejezetben.
Használata elrendezés menedzserek bizonyos előnyöket biztosít, amelyek már korábban tárgyalt. Ha a widget hozzáadni vagy törölni, a menedzser automatikusan alkalmazkodik a változó körülmények az elrendezés területen. Ugyanez vonatkozik arra az esetre, ha hívja módszerek alösszetevőt - hide () és a show (). Ha egy gyerek widget változtatni az „ideális” méret, elrendezés változás, figyelembe véve a megváltozott körülményekhez. Továbbá, az elrendezés menedzserek automatikusan telepíti a minimális méret a forma egésze alapján a minimum és az „ideális” a gyermek nagyságától kütyü.
Az összes példát, amit eddig venni, csak kombinált widgeteket és elrendezés menedzserek hozzáadunk további távtartó hasznosításának szabad hely. De néha, hogy a helyét a komponensek teljes mértékben összhangban van a vágyainkat, ez nem elég. Ilyen helyzetekben, akkor tovább kell állítani a méretét a politikai változások és az „ideális” méret a widget.
átméretezés azt mondják meg a layout manager, a widget kell húzni, vagy csökken. Qt alapértelmezett ad jó értéket átméretezés politika minden szabványos kütyü, de nincs alapértelmezett értéke nem lehet ideális minden alkalomra. Ezért van még mindig a szokásos gyakorlat, hogy további konfigurálását átméretezés politika egy-két kütyü az űrlapot. átméretezés politika van rendelve a két irányban (függőleges és vízszintes). A leggyakrabban használt értékek Fix, Minimum, Maximum, Preferált és bővülő:
Fix - Widget egy fix méretű, azaz a ő nem nyúlik, vagy zsugorodik. Meg kell mindig „tökéletes” (sizeHint ()) méretét.
Minimum - „ideális” méret a widget a lehető legkisebb méretben. A widget nem zsugorodik ennél kisebb méretű, de ez is nyúlik, és elfoglalja az összes rendelkezésre álló helyet, ha szükséges.
Maximum - „ideális” méret a widget a maximális mérete, azaz, Widget lehet tömöríteni a lehető legkisebb méretű, de nem nyúlik tovább, mint az „ideális”.
Előnyös - „ideális” méret a widget, akkor előnyös, mérete, de ha szükséges, a widget mindkét szakaszon, és összezsugorodik.
Bővülő - és a widget lehet feszített és tömörített, de ő inkább nyúlik.
6.4 ábra összefoglalja mindazt, amit már említettük a politika különböző méretben QLabel példa. megjeleníti a szöveget „szöveg”.

Ábra 6.4. Különböző méretű változik politikát.
Ha a felbontás megváltozott formában, amely magában foglalja a komponenseket politikáknak részesített és bővülő. az extra helyet kap a Táguló kütyü a politikával. míg a Előnyös widgetet tartja „ideális” méret.
Van még két másik politikai átméretezés: MinimumExpanding és figyelmen kívül hagyták. Az első ilyen volt a korábbi verzióiban a Qt, bár meglehetősen ritka, ma már nagyrészt nem releváns, mivel a legjobb eredményt ad találkozót kiterjesztése politikai és újra végrehajtása (átfedés) módszer minimumSizeHint (). A második - sok szempontból hasonló bővítése. de figyelmen kívül hagyja az „ideális” méret a widget.
Amellett, hogy a politikai változások mérete, vízszintes és függőleges elemek a vizuális komponens, QSizePolicy folyamatosan húzódó tényezők. Hozzá vannak szokva, hogy meghatározza a bizonyos fokú nyújthatóságot. Tegyük fel például, hogy az űrlap QListView. és ez alatt - QTextEdit. Meg kell képeznek nyújtás során QTextEdit nőtt kétszer gyorsabb, mint QListView. Erre a célra, a függőleges szakaszon faktor (verticalStretch) QTextEdit komponens beállítása 2 és QListView - 1.
Egy másik módja, hogy befolyásolja az, hogy a - változtassa meg a minimális és maximális a gyermek kütyü. Az elrendezés vezetője figyelembe veszi az értékek ezen paraméterek.