Qt cvičení - rozvoj funkce sinus
Napište interaktivní GUI aplikaci, která pro zadaný argument počítá jednotlivé kroky rozvoje funkce sinus pro zadaný argument v bodě nula.

Třída MainWindow definuje privátní atributy x, y, n, c, s viz jejich popis v komentářích.
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
double x; // argument
double y; // spravna hodnota
int n; // index
double c; // clen
double s; // castecny soucet
private slots:
void on_pushButton_clicked();
void on_lineEdit_x_textChanged(QString );
};
Konstruktor explicitně maže obsah widgetů Label, které jsou používány pro výstup údajů.
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->label_sin ->clear();
ui->label_n ->clear();
ui->label_clen ->clear();
ui->label_soucet->clear();
ui->label_chyba ->clear();
}
Při změně widgetu LineEdit (zadání argumentu x) jsou nastaveny hodnoty interních atributů (slot reagující na signál text changed).
void MainWindow::on_lineEdit_x_textChanged(QString )
{
x = ui->lineEdit_x->text().toDouble();
y = std::sin(x);
ui->label_sin->setText("sin(x) = " + QString::number(y));
n = 1; // index
c = x; // prvni clen
s = x; // castecny soucet
ui->label_n ->setText(QString::number(n));
ui->label_clen ->setText(QString::number(c));
ui->label_soucet->setText(QString::number(s));
ui->label_chyba ->setText(QString::number(s-y));
}
Výpočet dalšího členu rozvoje (a zobrazení průběžného stavu) se provádí ve slotu vždy po stisknutí tlačítka Další. Hodnota členu rozvoje se přitom počítá z předchozího členu rozvoje (tj. nikdy například nepočítáme explicitně faktoriály nebo mocniny).
void MainWindow::on_pushButton_clicked()
{
c /= (n+1)*(n+2);
n += 2;
c *= -x*x;
s += c;
ui->label_n ->setText(QString::number(n));
ui->label_clen ->setText(QString::number(c));
ui->label_soucet->setText(QString::number(s));
ui->label_chyba ->setText(QString::number(s-y));
}
Příklady funkcí pro výpočet funkční hodnoty rozvojem viz příklady 6, 7, 8 a 9.