[gelöst] QDoubleSpin Komma+Punktsepariert

Alles rund um die Programmierung mit Qt
Antworten
Pixtar
Beiträge: 97
Registriert: 5. Mai 2010 15:32

[gelöst] QDoubleSpin Komma+Punktsepariert

Beitrag von Pixtar »

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.
Zuletzt geändert von Pixtar am 8. April 2011 09:02, insgesamt 1-mal geändert.
Pixtar
Beiträge: 97
Registriert: 5. Mai 2010 15:32

Beitrag von Pixtar »

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();

}
Pixtar
Beiträge: 97
Registriert: 5. Mai 2010 15:32

Beitrag von Pixtar »

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.
Pixtar
Beiträge: 97
Registriert: 5. Mai 2010 15:32

Beitrag von Pixtar »

Problem gelöst mit folgendem Code:

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);
    }
};
NACHTRAG: Copy&Paste funktioniert jedoch nicht, da muss dann noch ein Event her, also das die kopierte Zahl "5.11" eingefügt werden kann.
Antworten