Seite 1 von 1
Problem mit QDialog - nach hide(); geht show(); nicht
Verfasst: 18. Juni 2009 12:15
von zimti
Hallo,
ich habe ein Problem. Ich erstelle mehrere QDialoge die im hintergrund laufen sollen und daher setze ich alle bis auf einen zu Anfang auf hide().
später nach einem keyEvent z.B. mit taste 1 möchte ich den Aktuellen Dialog hide setzten und dafür einen anderen mit show anzeigen lassen.
das hide klappt super.. weil alles weg ist.. aber das show bringt nix
was mache ich falsch?
muss ich noch irgendwas anderes beachten ?
---
QApplication app(argc, argv);
.....
würde ich show und hide hier schon aufrufen ist alles gut..
....
return app.exec();
---
aber ich mache es ja aus einem keyEvent heraus.!!
Verfasst: 18. Juni 2009 13:14
von upsala
Wenn du es aus einem keyEvent heraus machst, würde ich auch diesen Code zeigen und nicht irgendeinen, der überhaupt nichts mit dem Thema zu tun hat.
Verfasst: 18. Juni 2009 13:39
von zimti
Jeps.. hier mein Code.. (vereinfacht)
Meine Main:
Code: Alles auswählen
int main(int argc, char **argv)
{
QApplication app(argc, argv);
HauptFenster my;
my.show();
return app.exec();
}
}
Mein HauptFenster
Code: Alles auswählen
HauptFenster::HauptFenster(QWidget *parent): QDialog(parent)
{
setMaximumSize(300,200);
setMinimumSize(300,200);
setContentsMargins(0,0,0,0);
setWindowFlags(Qt::FramelessWindowHint);
...
myFenster1 = new Fenster1(this);
myFenster2 = new Fenster2(this);
myFenster1->show();
myFenster2->hide();
}
keyEvent
Code: Alles auswählen
HauptFenster::keyPressEvent(QKeyEvent* event)
{
if (event->text() == QString("1")) {
myFenster1->hide();
myFenster2->show();
}
}
Fenster1
Code: Alles auswählen
Fenster1::Fenster1(QWidget *parent) : QDialog(parent)
{
setMaximumSize(300,200);
setMinimumSize(300,200);
setContentsMargins(0,0,0,0);
setWindowFlags(Qt::FramelessWindowHint);
....
}
Fenster2
Code: Alles auswählen
Fenster2::Fenster2(QWidget *parent) : QDialog(parent)
{
setMaximumSize(300,200);
setMinimumSize(300,200);
setContentsMargins(0,0,0,0);
setWindowFlags(Qt::FramelessWindowHint);
....
}
Sage ich im HaptFenster show() oder hide() dann klappt es.
aber wenn ich nun die "1" drücke verschwindet mit dem hide mein fenster 1, aber das Fenster2->show() funktioniert nicht
Verfasst: 18. Juni 2009 16:18
von zimti
vll hilft das noch:
wenn ich im keyEvent folgemdes mache
Code: Alles auswählen
HauptFenster::keyPressEvent(QKeyEvent* event)
{
if (event->text() == QString("1")) {
myFenster1->hide();
myFenster1->show();
}
}
dann verschwindet das Fenster zwar, aber es wird nicht wieder angezeigt

ich raffe den fehler nicht?
ich könnte mir vorstellen das es nicht geht, weil ich danach kein ...exec() habe..
-> ein Fenster wir ja erst an der Stelle neu gezeichnet
aber wie sollte ich exec() an der stelle aufrufen??
Verfasst: 19. Juni 2009 11:55
von zimti
Habs...
Fenster1 und Fenster2 müssen wohl von QWidget erben und nicht von QDialog..
naja.. warum habe ich noch nicht ganz verstanden...aber es macht das was ich wollte :-)