[gelöst]Numpad

Alles rund um die Programmierung mit Qt
Antworten
SaLu
Beiträge: 50
Registriert: 18. August 2008 18:06

[gelöst]Numpad

Beitrag 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 ... :(
Zuletzt geändert von SaLu am 22. August 2008 10:40, insgesamt 1-mal geändert.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

setFocusPolicy(Qt::NoFocus);
für jedes Button.
SaLu
Beiträge: 50
Registriert: 18. August 2008 18:06

Beitrag von SaLu »

okay perfekt funktioniert. was eine zeile so alles ausmachen kann :)
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

:wink:
SaLu
Beiträge: 50
Registriert: 18. August 2008 18:06

Beitrag 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.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Ich hatte auch mal sowas geschrieben.
Hier die klasse:
SaLu
Beiträge: 50
Registriert: 18. August 2008 18:06

Beitrag von SaLu »

mhm kannst du mal kurz erklären was er genau macht und warum ein timer?
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

der timer schaltet nach 2 sekunden zum nächsten Zeichen weiter. Das keypad verhält sich größtenteils wie eine handytastatur.
SaLu
Beiträge: 50
Registriert: 18. August 2008 18:06

Beitrag von SaLu »

okay sieht gut. hat mir ein wenig geholfen. Wo gibst du den die einzelnen Buchstaben aus?

Habe noch beide Probleme :(
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag 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);
}
Antworten