Qmessagebox
Qmessagebox
Hallo Gemeinde,
ich komme nicht drauf, wie man eine QMessagebox auf Existenz abfragt.
Ich möchte verhindern, das die Messagebox noch einmal geladen wird, wenn sie schon präsent ist.
greezi
ritec
ich komme nicht drauf, wie man eine QMessagebox auf Existenz abfragt.
Ich möchte verhindern, das die Messagebox noch einmal geladen wird, wenn sie schon präsent ist.
greezi
ritec
Re: Qmessagebox
Hallo veeman,
vorerst, wie hier dargestellt.
Gruss ritec
vorerst, wie hier dargestellt.
Code: Alles auswählen
QMessageBox::information(this, tr("Nachrichten-Info"),
tr("Es sind immer noch ungelesene Nachrichten vorhanden!"),
(QMessageBox::Ok | QMessageBox::Cancel ) == QMessageBox::Ok);
Re: Qmessagebox
In der hinsicht ist es nicht möglich und auch nicht nötig zu prüfen ob dieses present ist, da solange dieses angezeigt wird,
alle weiteren Fenster sowieso blockiert werden.
Mfg veeman
alle weiteren Fenster sowieso blockiert werden.
Mfg veeman
Re: Qmessagebox
Hallo veeman,
es gibt im bestehenden sehr umfangreichen code ein tool, welches im hintergrund zeitgesteuert alle zeit x eine Resourcenabfrage durchführt und bei,
wie in diesem fall, vorhandener neuer nachrichten die o.g. Qmessagebox öffnet.
Wird die Qmessagebox vom anwender nicht geschlossen, weil er womöglich einige zeit nicht vor dem rechner sitzt, haben wir dann mal ebend
30, 50 oder auch 200 Qmessageboxen am start.
Das soll verhindert werden.
gruss ritec
es gibt im bestehenden sehr umfangreichen code ein tool, welches im hintergrund zeitgesteuert alle zeit x eine Resourcenabfrage durchführt und bei,
wie in diesem fall, vorhandener neuer nachrichten die o.g. Qmessagebox öffnet.
Wird die Qmessagebox vom anwender nicht geschlossen, weil er womöglich einige zeit nicht vor dem rechner sitzt, haben wir dann mal ebend
30, 50 oder auch 200 Qmessageboxen am start.
Das soll verhindert werden.
gruss ritec
Re: Qmessagebox
Ahso, ok dann müsst er es ein wenig anders Lösen.
Die einfachste Lösung wäre einfach ne bool Variable zu verwenden um zu schauen ob das Fenster angezeigt wird.
Wenn ihr mit Threads arbeitet sollte die obige Konstellation mit einem QMutex geschützt werden.
Eine andere Möglichkeit könnte sein dass man einfach nach einem QMessageBox Kindobject zu suchen.
Wie erfolgt die Aktualisierung? Timer? Thread?
Mfg veeman
Die einfachste Lösung wäre einfach ne bool Variable zu verwenden um zu schauen ob das Fenster angezeigt wird.
Code: Alles auswählen
if (!visible) {
visible = true;
QMessageBox::information(..)
visible = false;
}
Eine andere Möglichkeit könnte sein dass man einfach nach einem QMessageBox Kindobject zu suchen.
Code: Alles auswählen
if (this->findChildren<QMessageBox*>().count())
.... // Message Box vorhanden
Mfg veeman
Re: Qmessagebox
Leitet sie ab und macht sie static.
In den Konstruktor:
Im Destructor:
Im Body:
Ganz unten in den Body:
Im Header
Jetzt kannst du mit:
deine Messagebox erstellen, falls es sie noch nicht gibt.
In den Konstruktor:
Code: Alles auswählen
if ( MessageBox::instance == NULL )
{
MessageBox::instance = this;
} else {
throw std::runtime_error ( "Double initialisation Interface" );
}
Code: Alles auswählen
MessageBox::instance = NULL;
Code: Alles auswählen
MessageBox* MessageBox::getInstance()
{
return instance;
}
Code: Alles auswählen
MessageBox* MessageBox::instance = NULL;
Code: Alles auswählen
public:
static MessageBox* getInstance();
private:
static MessageBox* instance;
Code: Alles auswählen
if(MessageBox::getInstance())
{
MessageBox::getInstance()->show (); // show
}
else
{
new MessageBox();
MessageBox::getInstance()->show ();
}
// new
Zuletzt geändert von dazedly am 22. Februar 2013 18:40, insgesamt 1-mal geändert.
Re: Qmessagebox
Hallo veeman, hallo dazedly,
die aktualisierungen laufen über einen timer.
Danke für die vorschläge!
Ich verarbeite das mal und gebe feedback!
beste grüsse
ritec
die aktualisierungen laufen über einen timer.
Danke für die vorschläge!
Ich verarbeite das mal und gebe feedback!
beste grüsse
ritec
Re: Qmessagebox
Hallo veeman,
die idee mit der boolschen variable funktioniert so nicht.
Mit der Umsetzung der Idee der Abfrage des QMessageBox Kindobjectes kann ich schon mal einen Erfolg vermelden.
Danke dafür!
Hallo dazedly,
deinen vorschlag prüfe ich ebenfalls und gebe ein feedback dazu.
Auch dafür schon mal besten dank!
beste gruesse
ritec
die idee mit der boolschen variable funktioniert so nicht.
Mit der Umsetzung der Idee der Abfrage des QMessageBox Kindobjectes kann ich schon mal einen Erfolg vermelden.
Danke dafür!
Hallo dazedly,
deinen vorschlag prüfe ich ebenfalls und gebe ein feedback dazu.
Auch dafür schon mal besten dank!
beste gruesse
ritec