Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Wiki Markup
h2. 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}
class Dialog : public QDialog {
    Q_OBJECT
public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
    QValidator *kokonaislukuvalidaattori;
    QValidator *reaalilukuvalidaattori;
{code}

Luokan muodostimeen tehdään validaattorit ja yhdistetään ne syttöruutuihin
{code}
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);
}

{code}
Tehdään vielä painonapeille validointi eli mahdollistetaan nappien painaminen, kun luku on hyväksyttävissä.
{code}
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());
}
{code}