Alla olevasta esimerkistä selviää, miten voidaan tutkia onko tekstiruutuihin syötetty jotain ja validaattoreilla voidaan varmistaa että syöte on numeerinen
#include "dialog.h" #include "ui_dialog.h" #include <QMessageBox> #include <QDoubleValidator> Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Jakolaskin) { ui->setupUi(this); ui->pushButton->setEnabled(false); //asetetaan tekstikentille validaattorit ettei niihin voi kirjoitella mitä vain ui->lineEdit->setValidator(new QDoubleValidator(this)); ui->lineEdit_2->setValidator(new QDoubleValidator(this)); //liitetään napit laskentafunktioihin connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(onLaske())); //liitetään molempien tekstiruutujen textChanged signaalit onTextChanged //slotiin, joka on tehty itse connect(ui->lineEdit,SIGNAL(textChanged(const QString &)), this,SLOT(onTextChanged(const QString &))); connect(ui->lineEdit_2,SIGNAL(textChanged(const QString &)), this,SLOT(onTextChanged(const QString &))); } Dialog::~Dialog() { delete ui; } void Dialog::onLaske() { QMessageBox box; bool bOK1, bOK2; double value1 = ui->lineEdit->text().toDouble(&bOK1); double value2 = ui->lineEdit_2->text().toDouble(&bOK2); ui->lineEdit_3->setText(""); if(bOK1 && bOK2) { if(value2 != 0) { double result = value1 / value2; ui->lineEdit_3->setText(QString::number(result)); } else { box.setText("Et voi jakaa nollalla"); box.exec(); } } else { box.setText("Virheellinen syöte"); box.exec(); } } void Dialog::onTextChanged(const QString &) { //enabloidaan nappi, jos molemmat syötteet on annettu ui->pushButton->setEnabled(ui->lineEdit->text() != "" && ui->lineEdit_2->text()!= ""); }