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 |
---|
// Hyväksy kokonaisluvut väliltä 100...999, class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent = 0); ~Dialog(); QValidator *kokonaislukuvalidaattori = new QIntValidator(100, 999, ; 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); //hyväksymäärätään double-tyypin reaaliluku väliltä 0...100 ja kolme desimaalia QValidator *hyväksyttävä alue kokonaislukuvalidaattori = new QIntValidator(100, 999, this); reaalilukuvalidaattori =new QDoubleValidator(0.000,100.000,3,this); //sidoyhditetään validaattorivalidaattorit editLinesyöttöruuihin objektiin( nimeltäänEditLine kokonaisluku) ui->kokonaisluku->setValidator(kokonaislukuvalidaattori); ui->reaaliluku->setValidator(reaalilukuvalidaattori); //sido validaattori editLine objektiin nimeltään reaaliluku 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());
}
|