Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: QT4 a zachytávání zpráv z klávesnice [vyřešeno]  (Přečteno 5642 krát)

Martin - ViPEr*CZ*

QT4 a zachytávání zpráv z klávesnice [vyřešeno]
« kdy: 08 Května 2008, 08:56:33 »
Nevíte jak udělat zachytávání zpráv z klávesnice? Zkoušel jsem to přes virtuální metodu void keyPressEvent(QKeyEvent *event); ale nějak se mi to nepovedlo.
« Poslední změna: 14 Června 2008, 20:01:23 od Martin - ViPEr*CZ* »
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

ubuntu luky

  • Host
Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #1 kdy: 08 Května 2008, 09:08:47 »
Cau Martine.. mno je otazka prave jestli v linuxu existuje neco jako zpravy klavesnice jak je to ve Windows..  :) ja tohle chtel vyresit taky pod knihovnou Gtk nebo PyGtk ale proste nic sem nevygooglil a googlil jsem jak vzteklej asi dva dny. Jediny k cemu jsem se dohrabal byla nejaka funkce keyboard_grab() ktera vypadala slibne ale ta snad funguje uplne blbe ze vsem ostatnim aplikacim jakoby odebere tu klavesnici takze maj utrum a nefunguje to nejak tak jako ze si testnes co se stisklo a pripadne to vratis systemu, nehlede na to ze se mi to pod gtk ani nepovedlo zprovoznit.

Pak jsem uz i hledal pro tkinter coz je jina knihovna ale vsechny delaj vesmes to samy taky sem nic neobjevil ikdyz tam bylo trosku neco navic jako bind() tak sem zas googlil bind global jako globalne v systemu a nic  :)

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #2 kdy: 08 Května 2008, 09:19:59 »
No v QT dokumentaci je třeba příklad na tetrix. Jenže přepsáním virtuální metody jsem efektu získání akce z klávesnice nedocílil.... jo jo pod MFC je to brnkačka  ::)

přidávám výpis přepsané metody jak by to mělo fungovat:

Kód: [Vybrat]
void Form_Next::keyPressEvent(QKeyEvent *event)
{
     switch (event->key()) {
     case Qt::Key_1:
         x->l_lineEdit->setText("2");
         break;
     case Qt::Key_Right:
          x->l_lineEdit->setText("2");
         break;
     case Qt::Key_Down:
         break;
     case Qt::Key_Up:
         break;
     case Qt::Key_Space:
         break;
     case Qt::Key_D:
         break;
     }
}
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

ubuntu luky

  • Host
Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #3 kdy: 08 Května 2008, 09:26:38 »
no jo ale covece tenhle kod asi bude jen na tu konkretni aplikaci.. to ti staci? to nejak musi jit no  :)

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #4 kdy: 08 Května 2008, 09:39:46 »
V tom příkladě je třída co dědí z QFrame a tadle metoda co jsem přepisoval by měla být z třídy QWidget ze které vychází i QFrame... takže jsem svoji třídu nadědil z QFrame a přepsal tudle metodu, ale ejhle, cvakám na klávesu 1 a nic se neděje... dám si tam break a nic se neděje... takže to do tý metody ani nepříjde.... takže je něco špatně, ale netuším co... QT je na todle šílený....třeba na to, aby když kliknu na tlačítko a napsalo mi to do EditBoxu nějakej text je to naprosto zdrcující nedostatek.... v MFC a visuálu je to tázka 10s tady tak 10min.  ::)
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

ubuntu luky

  • Host
Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #5 kdy: 08 Května 2008, 11:39:21 »
no.. je lepsi vzdycky zacit od nejakych zacatku co treba kdyz udelas jen obycejny okno a tam si nadefinujes tuhle funkci funguje to? a tady http://doc.trolltech.com/4.3/qwidget.html#keyPressEvent se pise ze musis nejdriv zavolat setFocusPolicy() nebo co. ja sem MFC nikdy nedelal ale umel bych to udelat primo na jadre jak co se tyce lokalnich stisku tak v celym systemu.

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #6 kdy: 08 Května 2008, 11:59:30 »
Už jsem to vyřešil. KDevelop a QT4 tak těžkopádně generuje.... šílenost.... už jsem to zase o kousek dále pochopil... každopádně je dobrý vzít tu generovanou hlavičku z gui a předělat si jí. Už mi ta klávesnice funguje. Jsem ten objekt z tý generovaný hlavičky generoval tak jak se nabízí. Jenže tím pádem mám handle na úplně jiný okno a tak mi ta přepsaná metoda nefungovala. Ale už je to v pořádku. Zkouším si to na kalkulačce jednoduchý. Pokud bude pak někdo chtít můžu poskytnout zdrojáky ;)
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

ubuntu luky

  • Host
Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #7 kdy: 08 Května 2008, 12:01:00 »
Aha  ???  :D no ja prave tyhle form designery nak nepouzivam ja to radsi si to vytvorim rucne vis je to asi hloupejsi no ale radsi tak  :)

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #8 kdy: 08 Května 2008, 12:03:39 »
Aha  ???  :D no ja prave tyhle form designery nak nepouzivam ja to radsi si to vytvorim rucne vis je to asi hloupejsi no ale radsi tak  :)
No hele ono to ani jinak nejde jak si čtu těma tutorama... skoro vše si napsat ručně.... což mě kapičku mrzí.... btw... hezký fraktály vedle... to je na mě už moc... :D
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

ubuntu luky

  • Host
Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #9 kdy: 08 Května 2008, 12:30:28 »
Jasny no  :) no na me je to taky moc  :D ale verim tomu ze to nak sesmolim k tomu ze to bude umet zoomovat jenze na to clovek musi pochopit tu matematiku a pak bych se chtel vrhnout jeste na jinej typ fraktalu a to je julie protoze ten je taky moc hezkej. Mrkni na julii na wikipedii  :) http://en.wikipedia.org/wiki/Julia_set jenze to nejdriv musim pochopit aspon toho mandelbrota prave  :)

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice [vyřešeno]
« Odpověď #10 kdy: 17 Května 2008, 20:52:49 »
To je zmatek.... keyPressEvent sice funguje, ale nezachytává ENTER. No zatím jsem na to nepřišel jak ho zachytit. :(
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

ubuntu luky

  • Host
Re: QT4 a zachytávání zpráv z klávesnice [vyřešeno]
« Odpověď #11 kdy: 17 Května 2008, 21:05:27 »
ajaj  :-\ a zkousel si testovat jako konstantu Enter?

http://doc.trolltech.com/4.0/qt.html#Key-enum
« Poslední změna: 17 Května 2008, 21:21:01 od ubuntu luky »

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice [vyřešeno]
« Odpověď #12 kdy: 19 Května 2008, 10:02:31 »
No jasan, že jo:

Key_Enter

a nezastaví se to ... dokonce to nevleze ani do tý metody keyPressEvent... a jiný klávesy to tam zachytává... což teda nechápu... třída je naděděná z QDialogu a zachytávám to přímo na Dialogu ne třeba v EditBoxu což by mohlo být logický neboť by to sebral Parent objekt. QDialog (alias okno aplikace) by měl bejt hlavní objekt.

Takže neví někdo, která metoda to chytá?
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #13 kdy: 01 Června 2008, 15:44:40 »
Pořád nikdo neví?

http://vipersoftware.net/kos/kalkulacka.tar.gz

tady je to ke stažení... v tý funkci mi to nezachytí ENTER.

PS: v tý verzi co mám na netu není zachytávání enteru ve switch, je třeba si to tam dopsat!!!
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #14 kdy: 10 Června 2008, 21:16:55 »
Nikdo to nezkoušel?
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

Martin - ViPEr*CZ*

Re: QT4 a zachytávání zpráv z klávesnice
« Odpověď #15 kdy: 13 Června 2008, 20:09:15 »
Tak to bylá taková prkotina... dneska jsem se k tomu konečně zase dostal:

pro ty co by to chtěli zkoušet a taky nevěděli, tak po přepsání virtual metody keyPressEvent to chce do case toto:

Kód: [Vybrat]
case Qt::Key_Enter:
case Qt::Key_Return:
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

 

Provoz zaštiťuje spolek OpenAlt.