Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Esimerkki Qt validatorin käytöstä.

Validaattorilla voidaan tarkastaa syöttöruuttuun hyväksyttävät arvot. Alla esimerkki, jossa hyväksyttäviä ovat ekassa kokonaisluvut väliltä 100...999 ja toisessa reaaliluvut väliltä 0...100. Idea on, että tiedon kuittauspainike enabloidaan, kun arvo on hyväksyttävällä alueella.

Luokan esittelyssä esitellään validaattorit:

Code Block
class Dialog : public QDialog {
    Q_OBJECT
public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
    QValidator *kokonaislukuvalidaattori;
    QValidator *reaalilukuvalidaattori;

Luokan muodostimeen tehdään validaattorit ja yhdistetään ne syttöruutuihin

Code Block
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    //määrätään hyväksyttävä alue
    kokonaislukuvalidaattori = new QIntValidator(100, 999, this);
    reaalilukuvalidaattori =new QDoubleValidator(0.000,100.000,3,this);
    //yhditetään validaattorit syöttöruuihin ( EditLine )
    ui->kokonaisluku->setValidator(kokonaislukuvalidaattori);
    ui->reaaliluku->setValidator(reaalilukuvalidaattori);
    //laitetaan napit false=epätosi tilaan
    ui->lueKokonaisluku->setEnabled(false);
    ui->lueReaaliluku->setEnabled(false);
}


void Dialog::on_lueKokonaisluku_clicked()
{
    //kokonaislukuvalidaattori->validate();
    QString Apu=ui->kokonaisluku->text();
    ui->tulos->setText(Apu);
}

void Dialog::on_lueReaaliluku_clicked()
{
    QString Apu=ui->reaaliluku->text();
    ui->tulos->setText(Apu);
}

Tehdään vielä painonapeille validointi eli mahdollistetaan nappien painaminen, kun luku on hyväksyttävissä.

Code Block
void Dialog::on_kokonaisluku_textChanged(QString apu)
{
   //lueKokonaisluku nappi enabloidaan eli mahdollistetaan painaminen kun kokonaisluku tekstiruuttu on hyväksyttävissä
    ui->lueKokonaisluku->setEnabled(ui->kokonaisluku->hasAcceptableInput());
}

void Dialog::on_reaaliluku_textChanged(QString apu )
{
    ui->lueReaaliluku->setEnabled(ui->reaaliluku->hasAcceptableInput());
}