Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Alla olevasta esimerkistä selviää, miten voidaan tutkia onko tekstiruutuihin syötetty jotain ja validaattoreilla voidaan varmistaa että syöte on numeerinen

Code Block


\#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() \!= "");
}