tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
3871
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    halde halde ist offline Grünschnabel
    Registriert seit
    Dec 2003
    Beiträge
    3
    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
     

  2. #2
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


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


    mfg
    umbrasaxum
     

  3. #3
    halde halde ist offline Grünschnabel
    Registriert seit
    Dec 2003
    Beiträge
    3
    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
     

  4. #4
    Registriert seit
    Oct 2003
    Beiträge
    1.706
    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
     
    "I'm not deaf, I'm ignoring you"
    ----

  5. #5
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von halde
    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 :
    1
    2
    3
    4
    5
    6
    7
    
    QString strInput = ...;
    QString strLogin = "Passwort";
     
    if( strInput != strLogin )
    {
        QMessageBox::warning(this, "Titel", "Falsches Passwort");
    }
     

  6. #6
    halde halde ist offline Grünschnabel
    Registriert seit
    Dec 2003
    Beiträge
    3
    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
     

  7. #7
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    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.
     

Ähnliche Themen

  1. Webservice: Visual Studio 2008 vs Visual Studio 2010 Express for Windwos Phone
    Von Johannes7146 im Forum .NET Web und Kommunikation
    Antworten: 4
    Letzter Beitrag: 27.09.10, 23:06
  2. [Visual Studio 2008] UML-Designer / Plugin für C# . NET
    Von Marschal im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 01.04.10, 14:50
  3. Antworten: 3
    Letzter Beitrag: 07.08.08, 15:23
  4. Antworten: 2
    Letzter Beitrag: 18.11.04, 19:20
  5. Antworten: 2
    Letzter Beitrag: 16.11.04, 17:12