qT: hotkeys systemweit
-
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!"; } };
-
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.