Set QLineEdit nur fün double Zahlen, die nicht grösse als 5.0 sind beim Qt4



  • Hallo,

    wie setze ich das QLineEdit, dass es nur double Zahlen (nicht gösse als 5.0) editierbar sind?

    Ich habe es folgende versucht:

    ui.myLineEdit->setVoltage (new QDoubleValidator(0,5, 2, this));
    

    aber somit kann ich nur zeichen verhindern

    Danke in voraus


  • Moderators

    @Galilio

    Was ist setVoltage?

    sollte nicht setValidator sein?



  • @koahnig

    gedanklich war ich richtig aber was geschrieben ist falsch
    :-)

    QRegExp rx("[0-4].[0-9]");
    ui.myLineEdit(new QRegExpValidator(rx, this));
    

    So muss es passen oder?



  • Das stimmt wieder nicht ganz:

    QRegExp rx("[0-4].[0-9]");
    ui.myLineEdit->setValidator((new QRegExpValidator(rx, this));
    

    aber ich kann doch 123 eingeben und das muss verhindert werden.



  • @Galilio mal ganz dumm gefragt,
    warum muss es denn ein QLineEdit sein?

    Für einen double würde ich QDoubleSpinBox nehmen.

    setRange(double min double max)
    &
    setSingleStep(double val)

    brauchst du dann nur für die Konfiguration

    Wess es um's aussehen geht, kannst du das locker wie nen QLineEdit aussehen lassen, via QStyleSheet.



  • @J.Hilk

    Du hat vollkommen recht.
    Es macht sinn der QDoubleSpinBox zu nehmen.
    Wegen das aussehen wie stelle es das in QtDesigner, dass es genau wie QlineEdit aussieht?

    Danke



  • @Galilio
    schau mal hier sind Beispiele wie man QStyleSheet nutzen kann. Ich hab mal eben das Beispiel von QSpinBox genommen und auf das hier reduziert:

    QDoubleSpinBox {
        padding-right: 15px; /* make room for the arrows */
        border-width: 3;
    }
    
    QDoubleSpinBox::up-button {
        subcontrol-origin: border;
        subcontrol-position: top right; /* position at the top right corner */
    
        width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */
        border-image: url(:/images/spinup.png) 1;
        border-width: 1px;
    }
    
    QDoubleSpinBox::down-button {
        subcontrol-origin: border;
        subcontrol-position: bottom right; /* position at bottom right corner */
    
        width: 16px;
        border-image: url(:/images/spindown.png) 1;
        border-width: 1px;
        border-top-width: 0;
    }
    

    sieht schon sehr nach QLineEdit aus.
    Ich denke die Buttons werden nicht gezeichnet, weil die border-images nicht existieren.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.