Простая программа вычисления гипотенузы прямоугольного треугольника по двум катетам
- Постановка задачи
- Внешний вид приложения
- Файл widget.h
Составить программу получения значения гипотенузы прямоугольного треугольника по двум катетам. Базовый класс QWidget. На форме разместить следующие виджеты: два однострочных поля ввода, кнопка и три метки на одну из которых выводится вычисляемое значение. Для компоновки виджетов использовать QFormLayout. Проверить правильность вводимых числовых значений, если вводится не числовое значение, то на метке вывести FALSE.
#ifndef WIDGET_H #define WIDGET_H #include <QPushButton> #include <QLineEdit> #include <QLabel> #include <QFormLayout> class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); private: QPushButton *knopka; QLineEdit *tpole_a; QLineEdit *tpole_b; QLabel *clabel; QLabel *alabel; QLabel *blabel; QFormLayout *frmlayout; private slots: void ptxt(); }; #endif // WIDGET_H
#include "widget.h" #include <QString> #include <cmath> Widget::Widget(QWidget *parent) : QWidget(parent) { // Вывод компонентов knopka = new QPushButton(this); // tr() используется для перевода (локализации) knopka->setText(tr("Computing")); tpole_a = new QLineEdit(this); // Устанавливаем фокус на первое текстовое поле ввода tpole_a->setFocus(); tpole_b = new QLineEdit(this); clabel = new QLabel(this); clabel->setFrameStyle(1); alabel = new QLabel("a = ", this); blabel = new QLabel("b = ", this); // Компоновка QFormLayout // в две колонки, чаще применяемая в диалогах frmlayout = new QFormLayout; //Все поля будут увеличиваться, чтобы заполнить доступное место frmlayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); frmlayout->addRow(alabel, tpole_a); frmlayout->addRow(blabel, tpole_b); frmlayout->addRow(knopka, clabel); setLayout(frmlayout); // Сигнал connect(knopka,SIGNAL(clicked()),this,SLOT(ptxt())); } void Widget::ptxt(){ // Функция определяет действие в результате нажатия на кнопку // (Функция слота) QString string = tpole_a->text(); bool ok; double a = string.toDouble(&ok); string = tpole_b->text(); double b = string.toDouble(&ok); double c = hypot(a,b); // Проверяем на правильный ввод if (ok!=0) { clabel->setNum(c); } else { clabel->setText("FALSE"); } }
Составить программу вычисления объема конуса по диаметру основания и высоте. Использовать компоновку QGridLayout (в данном случае правильный вариант). Вывод значения предварять текстом (на метке) “V = “. Выводить в экспоненциальном формате. Установить кнопку закрытия окна и кнопку очистки текстовых полей. Использовать “&” для задания горячих клавиш.
- Описание класса QFormLayout
- Описание класса QString
- Описание класса QLabel
- Описание класса QLineEdit