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

halde

Grünschnabel
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
 
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
 
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.

Code:
QString strInput = ...;
QString strLogin = "Passwort";

if( strInput != strLogin )
{
    QMessageBox::warning(this, "Titel", "Falsches Passwort");
}
 
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
 
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.
 
Zurück