#qt
#qt
Вопрос:
Когда я запускаю этот код и выхожу из диалогового окна ввода, приложение завершает работу (поэтому значок в системном трее исчезает) :
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.hide();
return a.exec();
}
window.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QSystemTrayIcon>
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow();
~MainWindow();
QSystemTrayIcon* sticon;
QAction* actTexte1;
QAction* actTexte3;
public slots:
void changeTexte1();
void changeTexte3();
};
#endif // MAINWINDOW_H
window.cpp
#include "mainwindow.h"
#include <QSystemTrayIcon>
#include <QWidget>
#include <QMenu>
#include <QtGui>
#include <QApplication>
#include <QInputDialog>
MainWindow::MainWindow()
{
sticon = new QSystemTrayIcon(this);
QIcon icon(":/music.png");
sticon->setIcon(icon);
QMenu* stmenu = new QMenu(NULL);
actTexte1 = new QAction("test",NULL);
actTexte3 = new QAction("exit",NULL);
stmenu->addAction(actTexte1);
stmenu->addAction(actTexte3);
sticon->setContextMenu(stmenu);
sticon->show();
connect(actTexte1, SIGNAL(triggered()), this, SLOT(changeTexte1()));
connect(actTexte3, SIGNAL(triggered()), this, SLOT(changeTexte3()));
}
MainWindow::~MainWindow()
{
}
void MainWindow::changeTexte1()
{
bool dialogResu<
QString result = QInputDialog::getText(this, "Echonest API Key", "Enter your API key:", QLineEdit::Normal,
"key", amp;dialogResult);
}
void MainWindow::changeTexte3()
{
QApplication::quit();
exit(1);
}
Если в основном я установил w.show(); вместо w.hide(); он не вылетает, НО появляется пустое окно, а я этого не хочу, мне нужно только приложение в системном трее.
Как мне поступить?
Комментарии:
1. это решается с помощью: a.setQuitOnLastWindowClosed(false);
2. можете ли вы превратить свой комментарий в ответ и пометить его как «принятый», чтобы указать, что этот вопрос больше не нуждается в ответе?