Qt feldolgozás karakternél
QT: feldolgozási karakternél
Úgy tűnik, hogy a szokásos kérdés. de kérdés merült fel ma. ha igen, akkor dobja például egy emlék.
Elvileg elegendő az alkalmazás (widgetet) örökölt QWidget és végrehajtja a kódot módszer keyPressEvent - események feldolgozására a billentyűzetről.
Tény, hogy QWidget még egy csomó dolog, csak Qt - nem Studio vagy Builder, nem mindig a kívánt esemény „a listán”:
- paintEvent () akkor történik, amikor szükség van, hogy átfestés a widget. Bármely widget, amely megjeleníti a felhasználó által generált tartalom, akkor végre kell hajtania a kezelőt. Újrarajzoláskor segítségével QPainter. Ez csak akkor fordul elő paintEvent () vagy funkció hívott paintEvent ().
- resizeEvent () akkor történik, amikor a widget átméretezi.
- mousePressEvent () fordul elő, ha az egér gomb megnyomása idején, amikor az egér volt benne a widgetet vagy ha ő készített egérrel grabMouse (). Ha rákattint az egér gombját elengedése nélkül - gyakorlatilag ugyanaz, mint a kihívás grabMouse ().
- mouseReleaseEvent () jelenik meg, ha az egér gombját lenyomva tartja. A widget kap egy eseményt, ha felengedi az egérgombot, ha azt megelőzően volt egy kattintással esemény. Ez azt jelenti, hogy Ousley felhasználó kattintott az egér gombját belül a modult, majd mozgassa az egeret valahol, és ott elengedte a gombot, akkor a modul megkapja a kibocsátás esetén. Egy kivétel van: ha megnyomja a gombot, a pop-up menü, azonnal elfogják egér eseményeket.
- mouseDoubleClickEvent () akkor történik, amikor a felhasználó duplán a modulra kattint. Ha a felhasználó egy dupla kattintással, a modul megkapja a gomb click esemény, az esemény akkor engedje el a gombot, és a megkötése esetén a második kattintás (több esemény a mozgás az egér jöhet, ha a felhasználó nem tartja helyén a kar a műtét során). Lehetetlen különbséget tenni kislemez dupla kattintással, amíg a második kattintás fog bekövetkezni. Ez az egyik oka annak, hogy egy csomó könyvet a fejlesztés a felhasználói felület ajánlott dupla kattintás került előnyösebb, mint az egységes, amikor a váltás a különböző műveleteket.
- keyPressEvent () akkor történik, amikor megnyom egy gombot, és újra, amikor a gombot lenyomva tartjuk az automatikus ismétlés. A Tab billentyű megnyomása vagy a Shift + Tab kombinációt kulcs továbbítódik, ha a widget nem használja fókuszeltolódást mechanizmus. Hogy elfogják Ezen gombok megnyomásával csorbíthatja a QWidget :: esemény ().
- focusInEvent () fordul elő, amikor a widget kap fókuszt (ha hívjon setFocusPolicy ()). Jól megírt widgetek azt mutatják, hogy kaptak a fókuszt egy egyértelmű és egyszerű módon.
- focusOutEvent () jelenik meg a widget veszít billentyűzet fókuszt.
- mouseMoveEvent () akkor, ha az egeret mozgatni a gomb megnyomásakor. Ez hasznos lehet, közben egy húzási művelet. Ha hívja setMouseTracking (igaz). kap egéreseményeket, akkor is, ha nincs lenyomva.
- keyReleaseEvent () akkor beszélünk, ha a gombot elengedi, és megnyomja (ha kulcs autorepeat). Ebben az esetben a modul megkapja a két esemény mintegy elengedte és billenytûkombinációkat egyes ismétlés. A Tab billentyű megnyomása vagy a Shift + Tab kombinációt kulcs továbbítódik, ha a widget nem használja fókuszeltolódást mechanizmus. Hogy elfogják Ezen gombok megnyomásával csorbíthatja a QWidget :: esemény ().
- wheelEvent () akkor történik, amikor a felhasználó elfordítja az egér kerék, míg a widget összpontosítani.
- enterEvent () jelenik meg, amikor az egér belép a helyet foglalja el a widget a képernyőn (kivéve az elfoglalt terület gyerek) elemet.
- leaveEvent () akkor beszélünk, ha az egér elhagyja a területet a widget. Amikor egy egér belép a helyet foglalja el a gyermek widget leaveEvent () esemény bekövetkezik.
- moveEvent () akkor történik, amikor a widget viszonyítva mozgatjuk annak szülő.
- closeEvent () akkor történik, amikor a felhasználó bezárja a modulban (vagy, ha a funkció az úgynevezett közeli ()).
Nos, van minden egzotikus, hogy kimaradt.
Itt egy példa. Widget QLabel jel minden az ablakon, és tudjuk be azt billentyűzet egész, fel előtte a „-” vagy „+” törli az utolsó karaktert megnyomásával BackSpace vagy törli az összes gomb megnyomásával törlése. A maximális hossza bemeneti szimbólumok 16 korlátozott.