Hallo Leute,
ich habe hier nen kleines Prob. Es geht um die QDoubleSpinBox, welche den Nachkommateil vom Vorkommateil per Komma trennt. Diese Notation möchte ich beibehalten und zusätzlich eine Punktseparierung ermöglichen:
Eingabe1 : 5,223 = 5,223
Eingabe2 : 5.233 = 5,223
QDoubleSpinBox besitzt derzeit noch keine eigenen Methoden um dieses Vorhaben umzusetzen.
Irgendwelche Ideen?
Grüße Pixtar
PS: Habe die Klasse bereits abgeleitet und per valueFromText umgebaut, was auch funktionierte, sofern ich die Klasse in einem leeren Widget hatte. Nachdem ich sie aber in meinem Programm eingebaut hatte, ging die Funktion wiederum nicht.
[gelöst] QDoubleSpin Komma+Punktsepariert
[gelöst] QDoubleSpin Komma+Punktsepariert
Zuletzt geändert von Pixtar am 8. April 2011 09:02, insgesamt 1-mal geändert.
Hier mal der Quelltext der funktioniert, wenn die SpinBox alleine ist:
Code: Alles auswählen
#include <QApplication>
#include <QtGui>
class DotCommaDoubleSpinBox : public QDoubleSpinBox{
public:
DotCommaDoubleSpinBox(QWidget* parent = 0) : QDoubleSpinBox(parent){
}
protected:
virtual double valueFromText(const QString &text) const{
return text.toDouble();
}
};
int main(int argc, char *argv[]){
QApplication a(argc, argv);
DotCommaDoubleSpinBox spinBox;
spinBox.setRange(-999999, 999999);
spinBox.setValue(500000);
spinBox.show();
return a.exec();
}
Habe nun mindestens 10 Varianten versucht um diese Klasse in meinem Programm zum laufen zu bekommen.
Habe selbst die Compiler-Flags für den Beispielquelltext von meinem Programm übernommen und es funktioniert immernoch im Beispiel.
Hätte jemand eine Idee, wer oder was die Methoden der Klasse blockiert?
Grüße Mike
PS: Ich habe keine anderen abgeleitete Klassen der Klasse, wo es zu Problemen kommen könnte.
Habe selbst die Compiler-Flags für den Beispielquelltext von meinem Programm übernommen und es funktioniert immernoch im Beispiel.
Hätte jemand eine Idee, wer oder was die Methoden der Klasse blockiert?
Grüße Mike
PS: Ich habe keine anderen abgeleitete Klassen der Klasse, wo es zu Problemen kommen könnte.
Problem gelöst mit folgendem Code:
NACHTRAG: Copy&Paste funktioniert jedoch nicht, da muss dann noch ein Event her, also das die kopierte Zahl "5.11" eingefügt werden kann.
Code: Alles auswählen
class DotCommaDoubleSpinBox : public QDoubleSpinBox{
public:
DotCommaDoubleSpinBox(QWidget* parent = 0) : QDoubleSpinBox(parent){
}
protected:
virtual void keyPressEvent( QKeyEvent * event ){
if(event->key() == 46)
QDoubleSpinBox::keyPressEvent(new QKeyEvent(QEvent::KeyPress, 44, Qt::NoModifier, ","));
else
QDoubleSpinBox::keyPressEvent(event);
}
};