JetStre4m
Lieutenant
- Registriert
- Nov. 2007
- Beiträge
- 578
Hallo, ich versuche gerade in Qt ein Programm ohne sichtbares Fenster zu erstellen, das nur über ein Icon im System-Tray zu erreichen ist. Ich habe bis jetzt einfach ein QWidget erzeugt, dass ein QSystemTrayIcon enthält und davon ein Objekt angelegt ohne hinterher die show()-Methode aufzurufen, so funktioniert das Ganze auch.
Aber wenn ich in einem Slot einen Klick auf das Tray-Icon verarbeite und dazu einen eigenen Dialog aufrufe, Beendet sich das Gesamte Programm nach Ausführung desselben.
Hier mal der Code:
Was mache ich falsch, oder wie lässt sich das Ganze eleganter lösen?
Aber wenn ich in einem Slot einen Klick auf das Tray-Icon verarbeite und dazu einen eigenen Dialog aufrufe, Beendet sich das Gesamte Programm nach Ausführung desselben.
Hier mal der Code:
Code:
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow();
~MainWindow();
private:
QSystemTrayIcon* icon;
public slots:
void trayIconClicked(QSystemTrayIcon::ActivationReason);
};
#endif // MAINWINDOW_H
Code:
//mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow()
{
icon=new QSystemTrayIcon(QIcon("Icon.png"));
icon->show();
connect(icon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this,
SLOT(trayIconClicked(QSystemTrayIcon::ActivationReason)));
}
void MainWindow::trayIconClicked(QSystemTrayIcon::ActivationReason reason)
{
if(reason==QSystemTrayIcon::Trigger)
{
QMessageBox::information(this, "Klick", "Viele wichtige Sachen", QMessageBox::Ok);
//An dieser stelle Beendet sich das Programm, wenn die show()-Funktion nicht aufgerufen wurde
}
}
MainWindow::~MainWindow()
{
}
Code:
//main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow* w=new MainWindow();
//w->show(); <-- Auskommentiert, damit kein Fenster angezeigt wird
return a.exec();
}
Was mache ich falsch, oder wie lässt sich das Ganze eleganter lösen?