# Login-Maske mit Qt-Designer und Visual Studio.Net



## halde (21. Juli 2005)

Hallo 

Ich schlage mich zur Zeit mit dem Qt 3.3.4 herum. Als Entwicklungsumgebung setzte ich Visual Studio.Net 2003 ein.

Nun zu meinen Problem: Ich muss ein Programm mit einer Login-Maske erstellen, um so nur den Benutzern Zugang zum Programm zu gewähren, welche auch über das notwendige Passwort verfügen. Beim ersten Login ist das Passwort gegeben, anschliessend sollte der Benutzer das Passwort über das Menu ändern können.

Das Passwort sollte auch in einem Logfile abgelegt sein, wenn möglich natürlich verschlüsselt.

Kann mir jemand weiterhelfen, ich habe leider keine Ahnung wie ich das machen kann.

Gruss halde


----------



## Tobias K. (22. Juli 2005)

moin


Wenn du eine Einführung in QT brauchst, guck dir das an -> http://www.tutorials.de/tutorials178446.html


mfg
umbrasaxum


----------



## halde (24. Juli 2005)

Vielen Dank für diese Hilfe

Für mein Problem brachte es jedoch nicht viel.

Ich habe mit dem Qt-Designer eine Login-Maske mit einem QLineEdit für die Passworteingabe erstellt.

Zusätzlich habe ich das richtige Passwort folgendermassen initialisiert:
QString Login = "Passwort";

Sobald beim QLineEdit eine Eingabe getätigt wird, wird der OK-Button auf visible gesetzt, sodass man das Passwort bestätigen kann. 

void frm_Login::enablebtn_OK( const QString &)
{
    if (e_Passwort>0)
             btn_OK->setEnabled(true);
    else
	btn_OK->setEnabled(false);
}

Mein Problem ist nun, wie kann ich bei Qt diese zwei Strings vergleichen und bei einer falschen Eingabe eine Fehlermeldung anzeigen.

Für den Passwortvergleich habe ich eine eigene Funktion erstellt:
void frm_Login::vergleichePasswort(const QString &)

In C++ würde dies etwa folgendermassen aussehen:

bool getPasswort()
{
    bool ok_flag = false;
    string wort;
    while ( ok_flag != true)
    {
        cout<< "Geben Sie das Passwort ein:";
        cin.sync();
        cin>>setw(20)>>wort;
        if (wort !=geheimwort)
        cout << "Passwort ungültig!"
        else
        ok_flag = true;
    }
     return ok_flag;
}


Vielen Dank für Eure Hilfe (wenn möglich mit Source)..

Halde


----------



## RedWing (24. Juli 2005)

Wenn du QT programmierst solltest du diese Seite eigentlich in und 
auswendig kennen :
http://doc.trolltech.com/3.3/
Dann hättest du sicherlich das gefunden:
http://doc.trolltech.com/3.3/qstring.html#compare-2

Dein 2tes Problem loest du am besten mit der:
http://doc.trolltech.com/3.3/qmessagebox.html

Gruß

RedWing


----------



## MCoder (24. Juli 2005)

halde hat gesagt.:
			
		

> Mein Problem ist nun, wie kann ich bei Qt diese zwei Strings vergleichen und bei einer falschen Eingabe eine Fehlermeldung anzeigen.
> Halde



Da sehe ich eigentlich kein großes Problem. Da du ja wohl beide Strings in einem QString-Objekt gespeichert hast, kannst du direkt den Vergleichs-Operator verwenden. Die Ausgabe der Meldung erfolgt dann mit einer QMessageBox.


```
QString strInput = ...;
QString strLogin = "Passwort";

if( strInput != strLogin )
{
    QMessageBox::warning(this, "Titel", "Falsches Passwort");
}
```


----------



## halde (25. Juli 2005)

Dieses Problem konnte ich lösen. Jedoch habe ich schon das nächste endeckt.

Zuerst möchte ich ein Log-Dialog dem Benutzer zeigen. Sobald er das Passwort richtig eingeben hat, soll dieser Log-Dialog verschwinden und es soll ein neuer Dialog (die eigentliche Appliaktion) gestartet werden.
Ich habe div. Versuche vorgenommen und Lektüren studiert, jedoch ohne Erfolg.
Das war mein letzter Versuch:

int main( int argc, char* argv[] )
{
QApplication LoginMask( argc, argv ); 
// Instantiierung eines QApplication-Objekts

QSplashScreen *frm_Login = new QSplashScreen(); 
frm_Login->show(); // zeige Form Login

Form1 Login; 
LoginMask.setMainWidget( &Login ); // 'Login' 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.
Es wird jedoch direkt immer das Form1 angezeigt.

Kann mir jemand helfen.

Gruss Andreas


----------



## MCoder (25. Juli 2005)

QSplashScreen habe ich noch nicht verwendet, aber lt. Klassenreferenz benötigt es ein Bitmap im Konstruktor bzw. es sollte später mit "setPixmap()" zugewiesen werden. Ich könnte mir denken, dass ohne Bitmap kein Fenster angezeigt wird.


----------

