Спроектируйте окно как показано на рисунке. Нижний элемент — listWidget.
Перейдите в режим Edit.
Откройте файл dialog.h и напишите в классе Dialog объявление функции:
double f(double);
Откройте файл dialog.cpp и напишите определение функции как показано ниже:
#include "dialog.h"
#include "ui_dialog.h"
#include <math.h>
#include <QtGui>
Dialog::Dialog(QWidget *parent):
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
// в качестве примера возьмем функцию y = 1/x:
double Dialog::f(double x)
{
return 1/x;
}
// слот для кнопки «Вычислить»:
void Dialog::on_pushButton_clicked()
{
QTextCodec* codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
double a = ui->lineEdit->text().toDouble(); // прочитали a
double b = ui->lineEdit_2->text().toDouble(); // прочитали b
double h = ui->lineEdit_3->text().toDouble(); // прочитали шаг
int n = 0; // количество цифр после точки при выводе результата
double copy = h; // копия шага
while (copy < 1) { copy *= 10; n++;}
// количество цифр после точки в зависимости от шага
double y = 0;
ui->listWidget->clear(); // очищаем список
for (double x = a; x <= b; x += h) // проходим заданный отрезок
{
if (finite(y = f(x))) // если значение функции вычислено корректно
ui->listWidget->addItem(QString(" x = %1 y = %2 ").arg(x,0,'f', n).arg(y,0,'g',5)); // выводим значение аргумента и функции
else ui->listWidget->addItem(QString(" x = %1 значение не определено").arg(x,0,'f', n)); // выводим сообщение
}
}