Esimerkki Qt validatorin käytöstä.
Validaattorilla voidaan tarkastaa syöttöruuttuun hyväksyttävät arvot alla . 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 Hyväksy: kokonaisluvutpublic väliltä 100...999,QDialog { QValidator *kokonaislukuvalidaattori 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 |
---|
= new QIntValidator(100, 999, this); //hyväksy double-tyypin reaaliluku väliltä 0...100 ja kolme desimaalia QValidator *reaalilukuvalidaattori =new QDoubleValidator(0,100,3,this); //sido validaattori editLine objektiin nimeltään kokonaisluku ui->kokonaisluku->setValidator(kokonaislukuvalidaattori); //sido validaattori editLine objektiin nimeltään reaaliluku ui->reaaliluku->setValidator(reaalilukuvalidaattori); 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 syttöruuihinsyö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); } Dialog::~Dialog() { delete ui; } void Dialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } 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()); } |