MyWidget konstruktorból szedd ki a három sort, a main.cpp-ben pedig MyWidget w után w.show(); kell.
Szerintem akkor jó lesz.
Így a mywidget konstruktorában csinálsz egy sima QWidget-et, amit aztán megmutatsz. De az nem MyWidget típusú lesz, ergó nem fut le a MyWidget keypressevent függvénye.
Meg ebben a formában szerintem a program lefutása után nem is üríti a memóriát, de az már másik kérdés.
Nohát. Ha nem tárolod el sehol a projectw változót akkor sehogy nem fogod tudni elérni. Vagy mit szeretnél? Nem tudsz úgy összekötni egy signalt meg egy slotot, hogy csak akkor fusson ha escet nyomtak. Tárold le a QWidget* projectw-t az osztályban, és azt zárd be ha escet kaptál. Miért kell a függvényen belül ez?
Előfordult már olyan hiba, ami eddig nem elhíresedett programhibára vezetődött vissza, VÉGSŐsoron az is emberi hiba valahol, de Qt hibának azt neveztük volna, ha mondjuk a Qt-ban találsz egy bugot vagy következetlenséget. Ez emberi hiba. Próbáltad már a CONNECT macro-t?
Hát most egyszerű a képlet: ha nem fut le, azt könnyű ellenőrizni, beleírod hogy throw 1; vagy exit();
Ha lehal, akkor lefut, tehát ott rontasz el valamit. Ha nem, akkor biza nem fut le. Régen Qt-ztam, de ha jól emlékszem ott minden eseményt biza connectálni kell, tehát kell lennie VALAMILYEN billentyűzetesemény signálnak, nem?
hát ellenőriztem ezzel az módszerrel és "biza nem fut le" :D
a link pedig semmit nem mond mert innen néztem ki a KeyPressEventet de nem fut le semmi ép ez a baj..
valamint a QWidget osztály nem rendelkezik csak 2 signal-al és nincs hasonló
Magát a Tetrix játék példáját megnézted?
Ott valószínűleg működik. Azt fordítsd le egy önálló projektben. Nézd meg, hogy működik-e? Ha igen, akkor tanulj belőle!
Ezek azok a szabályok, amiket amíg nem érted miért, addig be kell tartani. Ha már megérted miért alakultak ki, akkor adott esetben el lehet térni tőle, mert tudni fogod, mit csinálsz. Addig nem érdemes.
De szeritnem is másold be a programot, ha rá se fut a függvényre, akkor valamit nagyon elbaltáztál
Nagyon régen Qt-ztam, de mivel sehol nem konnektálod össze a kexpresseventet valami signallal, és az ui_mainwindow nem leszármazottja semmilyen Qt-s osztálynak, ezért polimorfizmus sincs, ezért egyáltalán nem értem miért kéne bárminek is lefutnia...
Nem jó az irány szerintem. Csináld azt, hogy a QWidget-ből származtatsz egy saját widgetet.
Mivel a keypressevent függvény protected és virtual, ebben az osztályban újra meg tudod valósítani.
Tehát valami ilyesmi lesz:
MyWidget konstruktorból szedd ki a három sort, a main.cpp-ben pedig MyWidget w után w.show(); kell.
Szerintem akkor jó lesz.
Így a mywidget konstruktorában csinálsz egy sima QWidget-et, amit aztán megmutatsz. De az nem MyWidget típusú lesz, ergó nem fut le a MyWidget keypressevent függvénye.
Meg ebben a formában szerintem a program lefutása után nem is üríti a memóriát, de az már másik kérdés.