qT: hotkeys systemweit
-
Ich versuche systemweite hotkeys festzulegen.
QT unterschützt leider keine systemweiten.
Ich hab gelesen ich muss stattdessen
z.b.RegisterHotKey(winId(), 100, MOD_CONTROL, VK_SPACE);
verwenden.
Das ganze hab ich im constructor einer dialogform angegeben.über winevent muss ich dann ja denke ich das ganze abfangen.
Ich weiß leider weder welches event ich abfangen muss, noch wie ich das benutze.. Ich wollte testweise einfach mal diese funktion benutzen, um zu sehen ob überhaupt ein event ankommt:
bool winEvent(MSG * m) { QApplication::quit(); return false; }
Leider wird nie diese eventfunktion angesteuert... die tastenkombi is ohne funktion, oder ich hab doch was falsch gemacht.
Hat jemand eine erklärung für mich? (bei google finde ich leider nichts im zusammenhang mit qt, und die qt doku lässt leider zu wünschen übrig...)
-
Sowas ist über google aber echt nicht schwer zu finden...
google: Qt4 global hotkeys, und tada
http://lists.trolltech.com/qt-interest/2008-06/thread00006-0.html
z.B. geht aber sicher auch anders
-
ähm, der beitrag den du gelinkt hast (bzw die beiträge) sind zu dem thema nicht hilfreich, dort werden probleme zu xlib gelöst, es fällt nur 1-2 mal das wort shortcut, aber code in dem zusammenhang gibts da nicht.
-
Screeze schrieb:
ähm, der beitrag den du gelinkt hast (bzw die beiträge) sind zu dem thema nicht hilfreich, dort werden probleme zu xlib gelöst, es fällt nur 1-2 mal das wort shortcut, aber code in dem zusammenhang gibts da nicht.
Aber es gibt nen Link.http://docs.libqxt.org/classQxtGlobalShortcut.html
works on all 3 major platforms of course.
Na gut, wenn man drauf klickt, kommt dass die Seite nicht gefunden werden konnte. Suche nach "classQxtGlobalShortcut" bringt einen aber weiter.
Um es abzukürzen:
http://doc.libqxt.org/0.5.0/classQxtGlobalShortcut.html
-
hmm dazu muss ich irgendwie ne qt extension library benutzen seh ich das richtig?
ich hab mir auch irgendwas von der seite runtergeladen, aber ich kriegs nicht installiert... die config.bat startet und schließt sich sofort wieder..
gibts nen andren weg? oder weiß jemand was ich da machen muss?? ich find keine anleitung
-
configure(.bat) ruft man auch in der Console auf...
Danach make. Dann hast du die Library, die du in dein Projekt integrieren kannst.
Wenn dir die Library zu fett ist und dein Projekt GPL (oder eben nur für dich privat) ist, kannst du die benötigten Dateien einfach in ein extra Verzeichnis in deinem Projektbaum einfügen und fix einkompilieren. Musst aber immer schauen, dass die includes gefunden werden können, sollte aber kein Problem sein...
-
Nachtrag:
Für was gibt es eigentlich die Readme?
-
Die readme ist leider nicht hilfreich.
und auch wenn ich die .bat in der console aufrufe bringt das nicht viel. Ich hab zwar inzwischen einige teile in die PATH angabe reingebracht endlich (erstmal alles finden) aber jetzt komm ich bei diesem fehler nicht weiter:E:\Daten\libqxt-0.5.0>configure.bat
Testing for qmake...
Testing for mingw32-make...
Using mingw32-make.
Testing for optional external libraries.
If a test fails, some features will not be available.
Testing for OpenSSL...
OpenSSL disabled.
Testing for Berkeley DB...
Berkeley DB disabled.
Configuration successful.
Generating makefiles...
QMAKESPEC has not been set, so configuration cannot be deduced.
Error processing project file: E:/Daten/libqxt-0.5.0/libqxt.pro
Error running qmake. Cannot proceed.was soll ich da machen???
-
Der Fehler steht eins drüber:
QMAKESPEC has not been set, so configuration cannot be deduced.
Wie hast du Qt installiert? Und wie hast du biser deine Qt-Programme kompiliert?
Denn ohne diese fundamentalen Umgebungsvariablen sollte eigentlich schon das simpelste Qt4-HelloWorld nicht kompilieren.Qt4 per Installer installiert erstellt auch eine Verknüpfung zu einem "Qt4 Command Rpompt" oder wie das heißt, so weit ich mich da erinner. Da sind schon alle Umgebungsvariablen korrekt gesetzt.
Solltest du QtCreator verwenden, kannst du mal einfach die libqxt.pro als neues Projekt importieren!
-
Ich benutz den Qt creator.
Wenn ich das als Projekt importiere, was bringt mir das dann?
-
Screeze schrieb:
Ich benutz den Qt creator.
Wenn ich das als Projekt importiere, was bringt mir das dann?
Propiers aus
Der einzige Vortiel ist der, dass du nicht extra die ganzen Umgebungsvariablen setzen musst, das erledigt der QtCreator fü dich, Du musst eigentlich gar nix mehr tun, nur noch auf "compile" clicken. Gibts im QtCreator vllt. auch nen "install"-Button? Ansonsten in der Console "make install"Qt braucht Sachen wie QMAKESPEC etc. nur, um mit qmake (welches im PATH zu finden sein muss) korrekte Makefiles zu erstellen. Hast du ein solches, kannst du eigentlich alles auch selber in der Console erledigen.
-
installieren hab ich nicht direkt, nur
erstellen
neu erstellen
bereinigen
qmake ausführen
ausführenWas muss ich eigentlich machen, ich glaub da is mein problem.
Ich muss das ding erstellen, und dann? installieren? was und womit? ich glaub ich steh aufm schlauch einfach nur..
-
Hm also dein tipp mit Qt4 Command Rpompt hat mich schonmal weitergebracht..
hab das makedingens erstellt.
dann den ..32...make befehl ausgeführt, wie mir die konsole dann sagte.
das hat ne weile was getan.als es fertig war bin ich davon ausgegangen, dass es geklappt hat, und habe weiter laut anleitung
Add the following lines to your .pro file:
CONFIG += qxt
QXT += core guigehandelt.
als ich dann aber
#include <QxtApplication> #include <QxtGlobalShortcut>
einbinden wollte, hat mir der creator gesagt dass keine solche datei existiert.
Hab ich irgenwas vergessen? muss ich nochwas einstellen?edit:
Ich hab grad gesehn ich hab
mingw32-make install
vergessen. also hab ichs noch gemacht, aber leider hat auch das nichts gebracht. Es wird immernoch angezeigt dass diese dateien nicht da sind. Irgendwas muss ich wohl noch einstellen?edit2:
Man sollte den qcreator neu starten nach dem letzten schritt. Immerhin wirds jetzt erkannt. Um den rest kümmer ich mich morgen..
Danke schonmal....
-
Leider muss ich doch nochmal fragen.
Nach einbindung der qt dateien, kompiliert er das Projekt nichtmehr.
E:\Programme\Qt\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lQxtGuid
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\adclip.exe] Error 1
mingw32-make: *** [debug] Error 2
Beendet mit Rückgabewert 2.
Fehler beim Erstellen des Projekts adclip
Beim Ausführen des Build-Schritts 'Make'Ich habe alles so gemacht wie in der readme, bzw. der online anleitung.
Was passt da nicht?
-
Was ist denn falsch an QAction ?
-
keine systemweiten hotkeys?
-
QAction-Shortcuts klappen nur wenn ds Fenster Fokus hat. Globale Shortcuts willst du z.B., wenn du den Mediaplayer in den Systray verbannst, diesen aber trotzdem steuern willst, ohne die aktuelle Applikation zu "verlassen", und deinen Mediaplayer in den Vordergrund zu holen.
Zu dem Fehler:
Du übersetzt die Applikation mit aktiviertem Debug, hast aber von qxt keine Debug-Version gebaut(-lQxtGuid)
http://doc.trolltech.com/4.5/qmake-project-files.html#general-configuration
und das .pro-file der libqxt entsprechend anpassen. Oder, wenn du das configure.bat verwendest, die passende Option mitgeben.
-
ATube schrieb:
QAction-Shortcuts klappen nur wenn ds Fenster Fokus hat. Globale Shortcuts willst du z.B., wenn du den Mediaplayer in den Systray verbannst, diesen aber trotzdem steuern willst, ohne die aktuelle Applikation zu "verlassen", und deinen Mediaplayer in den Vordergrund zu holen.
Zu dem Fehler:
Du übersetzt die Applikation mit aktiviertem Debug, hast aber von qxt keine Debug-Version gebaut(-lQxtGuid)
http://doc.trolltech.com/4.5/qmake-project-files.html#general-configuration
und das .pro-file der libqxt entsprechend anpassen. Oder, wenn du das configure.bat verwendest, die passende Option mitgeben.Vielen Dank, das war der entscheidende Hinweis
Man war das ne schwere Geburt, ich hoffe mit der verwendung komm ich jetzt wieder besser klar....
-
+grml+ ich weiß nich, aber iwie is echt nicht mein Tag.
Anscheinend stell ich mich grad dämlich an.
Ich hab zwar kein tutorial o.ä. gefunden, was die verwendung erklärt, aber ich habs mir mal zusammengebastelt, wie ich glaube dass es funktionieren könnte. (für links dankbar...)In meine Qt anwendung, in mainwindow.h und mainwindow.cpp eingebunden:
#include <QxtApplication> #include <QxtGlobalShortcut>
in .h, unter private das hier dazugefügt:
QxtGlobalShortcut keySequence;
in .cpp im Konstruktor dann
keySequence = new QxtGlobalShortcut();
Allein das hat schon zur folge, dass meine app sobald sie (ohne fehler) kompiliert und ausgeführt wird, mit einem hinweis "... funktioniert nicht mehr." beendet wird.
Ich habe grade alle möglichen varianten durchprobiert, aber immer wenn ich einen schritt ähnlich wie oben angebe, stürzt mir das ding ab.
Hat jemand ne erklärung/ein beispiel/einen passenden Link ?Danke...
-
Ist ganz normales Qt
Hier die Doku:
http://doc.libqxt.org/0.5.0/classQxtGlobalShortcut.html
Verwendung (bitte nicht schlagen wenns nicht kompiliert, mir gehts ums Prinzip :P) :#include <QxtGlobalShortcut> #include <QKeySequence> class Object : public QObject { Q_OBJECT QxtGlobalShortcut* m_action; public: Object(QObject* parent = 0) : QObject(parent), m_action(newQxtGlobalShortcut(QKeySequence("Ctrl+Alt+A"))) { connect(m_action, SIGNAL(activated()), this, SLOT(jump())); } public slots: void jump() { qDebug() << "Jump!"; } };