ein Problem plagt mich seit kurzem. Und zwar starte ich meine Applikation versteckt. Ich rufe also in der main nicht die Funktion show() vom Dialog auf.
Nun habe ich in meinem Programm einen QProcess, wo ich auf das SIGNAL finished lausche. Es soll dort eine MessageBox angezeigt werden "Programm beendet". Ganz simpel eigentlich.
Allerdings beendet sich das Programm nach Betätigung des "Ok"-Buttons der MessageBox. Beim Debuggen sieht man auch, wie das Programm die eventLoop verlässt und in die main zurückgeht, wo return a.exec() die Applikation beendet.
Was kann das bitteschön sein?
Ich habe ein simples Beispiel angefügt, die ein Programm SelfClose startet. Dieses Programm schließt sich nach 2sek automatisch (siehe hier )
main
Code: Alles auswählen
QApplication a(argc, argv);
QMsgBoxBug w;
//w.show();
return a.exec();
Code: Alles auswählen
#include "qmsgboxbug.h"
QMsgBoxBug::QMsgBoxBug(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
subc = NULL;
subc = new SubClass(this);
}
QMsgBoxBug::~QMsgBoxBug()
{
delete subc;
subc = NULL;
}
Code: Alles auswählen
#include "subclass.h"
SubClass::SubClass(QObject *parent)
: QObject(parent)
{
mParent = NULL;
mParent = parent;
p = NULL;
p = new QProcess();
connect(p, SIGNAL(finished(int, QProcess::ExitStatus)),
this, SLOT(Finished(int, QProcess::ExitStatus)));
connect(p, SIGNAL(started()),
this, SLOT(Started()));
p->start("c:/SelfClose.exe");
}
SubClass::~SubClass()
{
delete p;
p = NULL;
}
void SubClass::Started()
{
//QMessageBox::information(0, "", "");
}
void SubClass::Finished(int ec, QProcess::ExitStatus es)
{
QMessageBox::information(0, "", "");
}
Ich bin am Rätseln was das noch sein kann.
Mfg KK