qT: hotkeys systemweit
-
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!"; } };
-
die doku hab ich schon gefunden, leider für mich grad nicht sehr hilfreich.
Ich arbeite noch nicht lange mit qt (wie man merkt) deshalb warscheinlich die Probleme.Leider konnte ich auch mit deinem Beispiel das Problem nicht lösen.
Ich hab jetzt mal ein komplett neues projekt gestartet, und nur das nötigste verpackt. Es passiert genau das selbe wie vorhin, die anwendung funktioniert nichtmehr, direkt nach start.mainwindow.h:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui/QMainWindow> #include <QxtApplication> #include <QxtGlobalShortcut> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT QxtGlobalShortcut *m_action; public: MainWindow(QWidget *parent = 0); ~MainWindow(); public slots: void jump(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QxtApplication> #include <QxtGlobalShortcut> #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), m_action(new QxtGlobalShortcut(QKeySequence("Ctrl+Alt+A"))) { ui->setupUi(this); connect(m_action, SIGNAL(activated()), this, SLOT(jump())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::jump() { qDebug() << "Jump!"; }
Ich bekomme zwar diese warnings:
mainwindow.h: In constructor
MainWindow::MainWindow(QWidget*)': mainwindow.h:24: warning:
MainWindow::ui' will be initialized after
mainwindow.h:16: warning: `QxtGlobalShortcut*MainWindow::m_action'
mainwindow.cpp:8: warning: when initialized hereAber die dürften damit nichts zu tun haben oder?
Und gleich ne verständnisfrage:
Was bringt es das hier, m_action(newQxtGlobalShortcut(QKeySequence("Ctrl+Alt+A")))
an
Object(QObject* parent = 0) : QObject(parent)
zu hängen?
-
Hast du auch anstatt eines QApplication in main ein QxtApplication erstellt?
Und wegen der Frage:
Das nennt sich Elementinitialisierer. Ist nix spezielles Qt sondern C++. Schau in dein Lieblingsbuch
-
main.cpp
//#include <QtGui/QApplication> #include "mainwindow.h" #include <QxtApplication> int main(int argc, char *argv[]) { QxtApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
Ja. Hilft leider nichts, oder hab ich was vergessen?
Das nennt sich Elementinitialisierer. Ist nix spezielles Qt sondern C++.
Ahh ok Danke..
Schau in dein Lieblingsbuch
Hab leider kein Buch zu c++ hier, lediglich ein paar onlinebooks und tutorials zz., und da wurde das nicht erwähnt.
Kannst du mir ein gutes Buch empfehlen?
-
Ich kämpfe weiterhin mit diesem Problem, falls jemand eine idee hat, immer her damit....
-
Sollte irgendjemand mal kurz zeit haben und sich das anschauen, ich bin weiterhin an einer Lösung interessiert. Falls das so nicht funktioniert, auch gerne an einer Alternativen. Es würde reichen wenn es auf Windows funktioniert.