Password strengh ermitteln ?

Alles rund um die Programmierung mit Qt
Antworten
nsd
Beiträge: 6
Registriert: 29. Oktober 2007 12:35

Password strengh ermitteln ?

Beitrag von nsd »

Als erstes grüsse ich erstmal die community und erwähne auch mal nebenbei das es meine ersten Schritte mit QT sind.

[Entwicklung unter Windows mit Eclipse QT version 4.3]
Meine Problemstellung ist folgende und zwar will ich per eingabe in ein QlineEdit auf ner Progressbar anzeigen wie sicher die Eingabe als passwort wäre. Ich erhalte jedoch keine Anzeige auf dem Progressbar. Das Signal Slot Konzept wird eigentlich simpel erklärt, jedoch weis ich nun nicht, ob ich im SLOT on_lineEditPassword_textChanged den neuen ermittelten Wert an das Signal valueCalculated übergeben kann. Weil dann müsste eigentlich der vordefinierte Slot vom Progressbar setValue den neuen wert erhalten .?

Wie gesagt, das sind meine ersten Schritte, und es wäre super wenn jemand mir helfen könnte.

main.cpp

Code: Alles auswählen

#include "GuiMain.h"
#include <QtGui>
#include <QtCore>
#include <QApplication>




int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Guimain w;
    w.show();
    a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
    return a.exec();
}

Guimain.h

Code: Alles auswählen

#ifndef GUIMAIN_H
#define GUIMAIN_H

#include <QtGui/QWidget>
#include "ui_test.h"
#include <QString>

class Guimain : public QWidget,
		       private Ui::GuimainClass
{
    Q_OBJECT

public:
    Guimain(QWidget *parent = 0);
    ~Guimain();

private:
    Ui::GuimainClass ui;
    
protected slots:
		void on_lineEditPassword_textChanged(const QString & text);
		
		
signals:
		void valueCalculated(int);
};

#endif // GUIMAIN_H
Guimain.cpp

Code: Alles auswählen

#include "GuiMain.h"
#include <QVBoxLayout>
#include <QLineEdit>
#include <QtCore>
#include <QProgressBar>
#include <QRegExp>
#include <QLabel>
#include "math.h"


Guimain::Guimain(QWidget *parent)
    : QWidget(parent)
{
	ui.setupUi(this);
	
	//QVBoxLayout* Layout = new QVBoxLayout();
	QLineEdit * lineEditPassword = new QLineEdit(this);
	lineEditPassword->setGeometry(0,0,100,20);
	QProgressBar * progressBar = new QProgressBar(this);
	progressBar->setGeometry(105,0,300,20);
	progressBar->setMaximum(20);
	progressBar->setMinimum(0);
		
	    //Layout->addWidget(lineEditPassword);
	    //Layout->addWidget(progressBar);
	 
	
	connect(lineEditPassword,SIGNAL(textChanged(const QString&)),
			 lineEditPassword,SLOT(on_lineEditPassword_textChanged(const QString& text)));
	
	connect(lineEditPassword,SIGNAL(valueCalculated(int)),
			progressBar,SLOT(setValue(int)));

}

Guimain::~Guimain()
{
	
}

void 
Guimain::on_lineEditPassword_textChanged(const QString& text)
{
		
	QRegExp grossB= QRegExp("ABCDEFGHIJKLMNOPQRSTVUWXYZ");
	int gb=text.count(grossB);
	
	QRegExp kleinB= QRegExp("abcdefghijklmnopqrstvuwxyz");
	int kb=text.count(kleinB);
	
	QRegExp zahlen= QRegExp("0123456789");
	int zahl=text.count(zahlen);
	
	QRegExp fremdzeichen= QRegExp("^°!§$%&=?`´+*~#,.-_:;");
	int fremd=text.count(fremdzeichen);
	
	int value = log10(26^gb)+log10(26^kb)+log10(10^zahl)+log10(20^fremd);
	emit valueCalculated(value);
	

	
}
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Code: Alles auswählen

   connect(lineEditPassword,SIGNAL(textChanged(const QString&)),
          lineEditPassword,SLOT(on_lineEditPassword_textChanged(const QString& text)));

keine Variablennamen angeben!

Das siehst Du übrigens auch während der Laufzeit (entweder im MSVC Debugger oder mit Hilfe von 'CONFIG += console' in der Konsole)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das kann so nicht funktionieren. Kommt beim Start nicht die Meckermeldung 'no such slot' beim ersten Connect auf der Konsole? Hmm, hat Christian schon geschrieben :-)

lineEditPassword hat auch kein Signal valueCaculated, bekommt es auch nicht, wenn Du das Signal in GuiMain deklarierst. Entweder von QLineEdit ableiten oder einfach die Methode der ProgressBar aufrufen. Slots sind nämlich nichts anderes.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
nsd
Beiträge: 6
Registriert: 29. Oktober 2007 12:35

Beitrag von nsd »

da kommt überhaupt keine fehlermeldung :/
ohh der zweite connect sollte so lauten

Code: Alles auswählen

connect(progressBar,SIGNAL(valueCalculated(int)),
			this,SLOT(setValue(int)));
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

nsd hat geschrieben:da kommt überhaupt keine fehlermeldung :/
Doch - wenn Du die Option in das pro-File einträgst so wie ich es geschrieben habe. Was soll ich noch mehr machen?? :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo,

ich fasse noch mal kurz zusammen...

Versuche es mal damit:

* Benenne Deinen Slot um in "calculateSecurity(const QString& text)"

Und dann Deinen Code ersetzen durch...

Code: Alles auswählen

   connect(lineEditPassword,SIGNAL(textChanged(const QString&)),
          this,SLOT(calculateSecurity(const QString&)));
   
   connect(this,SIGNAL(valueCalculated(int)),
         progressBar,SLOT(setValue(int))); 
Du hast auch versucht manuelles und automatisches Verbinden von Signals&Slots zu mischen. Wenn du Slots wie "on_lineEditPassword_textChanged" anlegst, dann wolltest du offenbar auf das automatische connect von Qt hinaus. Dann wäre das manuelle connecten nicht mehr notwendig.

Ich persönlich verbinde lieber manuell, da weiß man was die Anwendung macht :-)

Ciao,
Sephral
nsd
Beiträge: 6
Registriert: 29. Oktober 2007 12:35

Beitrag von nsd »

Ok, danke :) das mit dem automatischen Verbinden hab ich gerade nachgelesen. Jedoch war das auch nicht die Lösung :/
nsd
Beiträge: 6
Registriert: 29. Oktober 2007 12:35

Beitrag von nsd »

ok hat sich erledigt :) hab erst vorhin mit dem config +0 console gerafft :) mitm debug gehts halt besser und problem gelöst thx
Antworten