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()); } QLineEdit\* pLineEdit; // Hyväksy kokonaisluvut pLineEdit->setValidator( new QIntValidator()); // Vaihda strategiaa ja hyväksy liukuluvut pLineEdit->setValidator( new QDoubleValidator()); // Oma validaattori, joka hyväksyy email-osoitteen pLineEdit->setValidator( new CEmailValidator()); |