Seite 1 von 1

[gelöst]Numpad

Verfasst: 20. August 2008 09:32
von SaLu
Guten Morgen,

bin gerade dabei ein numpad für ein Touchscreen zu programmieren. Dabei soll das Numpad seine Zahlen in ein QLineEdit schreiben. Hier mal mein bisheriges Ergebnis.

Code: Alles auswählen

QObject::connect(ui.lineEdit_15, SIGNAL(cursorPositionChanged(int,int)),this, SLOT(test()));

...

void tabs::test()
{	
QObject::connect(ui.pushButton_21,SIGNAL(clicked()),
this,SLOT(test1()));

}

...

void tabs::test1()
{
	int y=ui.lineEdit_15->cursorPosition();
	ui.lineEdit_15->setText("0");
	ui.lineEdit_15->setCursorPosition(y+1);
}

So nun ist mein Problem das sobald ich den Button für 0 gedrückt habe mein Cursor wieder weggeht. Dazu habe ich manuell einfach mir die cursorposition gemerkt und +1 gemacht (s. Quelltext). leider funktioniert das nicht wie es soll. Hat jmd vielleicht eine Lösung oder eine bessere Idee?

Wäre für jeden tip dankbar. Ich denke das ist ein ganz simpler Fehler und werde mich wiedermal darüber ärgern. Aber trotzdem verbringt man Stunden mit den Kleinigkeiten ... :(

Verfasst: 20. August 2008 10:16
von CaptnChaos
setFocusPolicy(Qt::NoFocus);
für jedes Button.

Verfasst: 20. August 2008 10:24
von SaLu
okay perfekt funktioniert. was eine zeile so alles ausmachen kann :)

Verfasst: 20. August 2008 11:14
von CaptnChaos
:wink:

Verfasst: 20. August 2008 11:21
von SaLu
hab das prog jetzt ein wenig umgeschrieben. Und zwar speichert er die Zahl in einem String um sie nachher zu überprüfen.

Code: Alles auswählen

QObject::connect(ui.lineEdit_15, SIGNAL(cursorPositionChanged(int,int)),this, SLOT(test()));
...

void tabs::test()
{
	
	QObject::connect(ui.pushButton_21, SIGNAL(clicked()),this, SLOT(test1()));// numpad 0
	QObject::connect(ui.pushButton_25, SIGNAL(clicked()),this, SLOT(test2()));//numpad ,
	QObject::connect(ui.pushButton_23, SIGNAL(clicked()),this, SLOT(test3()));//numpad 1

//keine Angst kommt noch signalmapper :P
}

...

void tabs::test1()
{
	ui.lineEdit_15->setText(number+="0");
}
void tabs::test2()
{
	ui.lineEdit_15->setText(number+=",");
}
void tabs::test3()
{
	ui.lineEdit_15->setText(number+="1");
}

so das erste Problem ist, dass er mir meine Zahlen verdoppelt.

1 Schritt : Numpad 0 Ausgabe: 0 //soweit ok
2.Schritt : Numpad 1 Ausgabe: 011 //soweit nicht mehr ok
3. Schritt: Numpad , Ausgabe: 011,,,, //auch nicht mehr ok

so die 2te Frage ist wie bekomme ich es hin das er wenn er den Tab wechselt übrüft ob die Strings (in diesem Falle "number") auch in dem Bereich liegen den ich will.

Verfasst: 20. August 2008 11:55
von CaptnChaos
Ich hatte auch mal sowas geschrieben.
Hier die klasse:

Verfasst: 20. August 2008 12:19
von SaLu
mhm kannst du mal kurz erklären was er genau macht und warum ein timer?

Verfasst: 20. August 2008 12:24
von CaptnChaos
der timer schaltet nach 2 sekunden zum nächsten Zeichen weiter. Das keypad verhält sich größtenteils wie eine handytastatur.

Verfasst: 20. August 2008 14:04
von SaLu
okay sieht gut. hat mir ein wenig geholfen. Wo gibst du den die einzelnen Buchstaben aus?

Habe noch beide Probleme :(

Verfasst: 20. August 2008 16:00
von CaptnChaos

Code: Alles auswählen

KeyPad *keypad = new KeyPad(this);
connect(keypad, SIGNAL(stringChanged(QString)), this, SLOT(updateString(QString)));

void Password::updateString(QString str)
{
	passwordEdit->setText(str);
	passwordEdit->setCursorPosition(str.length()-1);
}