Alla olevasta esimerkistä selviää, miten voidaan tutkia onko tekstiruutuihin syötetty jotain ja validaattoreilla voidaan varmistaa että syöte on numeerinen
{code}
#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()!= "");
}
{code} |