Hallo Zusammen
Ich verwende den Qt-Designer 3.3.4 und habe folgendes Problem.
Beim Aufstarten der Applikation soll zuerst ein Log-Fenster dem Benutzer angezeigt werden (frm_Login). Sobald er das Passwort richtig eingeben hat, soll dieses Log-Fenster verschwinden und es soll das eigentliche HauptWidget (Form1: die eigentliche Appliaktion) gestartet werden.
Ich habe div. Versuche vorgenommen und das war mein letzter Versuch:
int main( int argc, char* argv[] )
{
QApplication LoginMask( argc, argv );
QSplashScreen *frm_Login = new QSplashScreen();
frm_Login->show(); // zeige Form Login
Form1 Login;
LoginMask.setMainWidget( &Login ); // 'Form1' ist das Hauptwidget
frm_Login->finish(&Login);
Login.show();
delete frm_Login;
return LoginMask.exec();
};
Das frm_Login ist das erste Fenster und anschliessend muss Form1 angezeigt werden.
Bei mir wird jedoch direkt immer das Form1 angzeigt.
Kann mir jemand helfen. Vielen Dank
Gruss Andreas
mehrere Widgets voneinander "starten"
int main( int argc, char* argv[] )
{
QApplication LoginMask( argc, argv );
QSplashScreen *frm_Login = new QSplashScreen();
LoginMask.setMainWidget( &Login );
frm_Login->show(); // zeige Form Login
int ret = LoginMask.exec(); // Eigener Returnwert, ob Passwort richtig ist
if( ret == 1 ) // wenn richtig
{
Form1 Login;
LoginMask.setMainWidget( &Login ); // 'Form1' ist das Hauptwidget
frm_Login->finish(&Login);
Login.show();
delete frm_Login;
return LoginMask.exec();
}
else
QMessageBox::error( bla bla );
};
So müsste es zB gehen, kann aber nicht testen. Du musst nur "accept" von frm_Login überschreiben und nur 1 zurückgeben, wenn das Passwort richtig war. Gibt aber noch andere Möglichkeiten.
Ob man in der main-routine signal/slot schon benutzen kann weiß ich jetzt garnicht, sonst könntest du dir ein signal in frm_login einbauen auf welches du reagierst ( auch ein Beispiel ).
Es antwortet sicher gleich noch jemand mit ner anderen ( besseren ) Möglichkeit.
Gruß
{
QApplication LoginMask( argc, argv );
QSplashScreen *frm_Login = new QSplashScreen();
LoginMask.setMainWidget( &Login );
frm_Login->show(); // zeige Form Login
int ret = LoginMask.exec(); // Eigener Returnwert, ob Passwort richtig ist
if( ret == 1 ) // wenn richtig
{
Form1 Login;
LoginMask.setMainWidget( &Login ); // 'Form1' ist das Hauptwidget
frm_Login->finish(&Login);
Login.show();
delete frm_Login;
return LoginMask.exec();
}
else
QMessageBox::error( bla bla );
};
So müsste es zB gehen, kann aber nicht testen. Du musst nur "accept" von frm_Login überschreiben und nur 1 zurückgeben, wenn das Passwort richtig war. Gibt aber noch andere Möglichkeiten.
Ob man in der main-routine signal/slot schon benutzen kann weiß ich jetzt garnicht, sonst könntest du dir ein signal in frm_login einbauen auf welches du reagierst ( auch ein Beispiel ).
Es antwortet sicher gleich noch jemand mit ner anderen ( besseren ) Möglichkeit.
Gruß
>>[-]>[-]>[-]>[-]<<<<<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]
Vielen Dank für deine Antwort.
Ich habe es versucht, jedoch ohne Erfolg.
Da ich noch Anfänger bin in Qt, bin ich um jede Hilfe von Euch dankbar.
Bei mir kommt die Fehlermeldung "Login" nicht deklarierter Bezeichner.
Das mit dem Signal habe ich auch versucht:
Als Sender "btn_OK"; Signal "clicked(); und dann muss ich doch beim Receiver "Form1" und als Slot "show" angeben können. Diese Auswahl steht mir leider nicht zur Verfügung.
Wie kann ich diese Forms untereinander verknüpfen?
Gruss Halde
Ich habe es versucht, jedoch ohne Erfolg.
Da ich noch Anfänger bin in Qt, bin ich um jede Hilfe von Euch dankbar.
Bei mir kommt die Fehlermeldung "Login" nicht deklarierter Bezeichner.
Das mit dem Signal habe ich auch versucht:
Als Sender "btn_OK"; Signal "clicked(); und dann muss ich doch beim Receiver "Form1" und als Slot "show" angeben können. Diese Auswahl steht mir leider nicht zur Verfügung.
Wie kann ich diese Forms untereinander verknüpfen?
Gruss Halde