Отчеты по лабам / Лабораторная №6 Акименко
.docxДисциплина: Объектно-ориентированное программирование
Группа: ИКПИ-02
Акименко Полина
Вариант 2
ЛАБОРАТОРНАЯ РАБОТА N 6
Создание проекта с графическим интерфейсом с использованием библиотеки Qt
1. Постановка задачи
Задача 2
На форме находятся два компонента типа LineEdit. Один из них служат для хранения операндов, второй – фиксации результата вычислений. Оба операнда заносятся в одно окно редактирования. Обеспечить выполнение четырех обычных арифметических операций. Организовать меню и панель инструментов.
2. Исходный код
Файл lab6.pro:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
widget.cpp
HEADERS += \
widget.h
FORMS += \
widget.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
Файл widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_plus_clicked();
void on_minus_clicked();
void on_mul_clicked();
void on_div_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
Файл main.cpp:
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
Файл widget.cpp:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_plus_clicked()
{
QStringList str;
int result = 0;
str = ui->line1->text().split(" ");
QVector<int> intArray;
QString s;
foreach(s,str) intArray+=s.toInt();
for(int i=0; i<intArray.length(); i++) result+=intArray[i];
QString res = QString::number(result);
ui->result->setText(res);
}
void Widget::on_minus_clicked()
{
QStringList str;
int result;
str = ui->line1->text().split(" ");
QVector<int> intArray;
QString s;
foreach(s,str) intArray+=s.toInt();
result=intArray[0];
for(int i=1; i<intArray.length(); i++) result-=intArray[i];
QString res = QString::number(result);
ui->result->setText(res);
}
void Widget::on_mul_clicked()
{
QStringList str;
int result = 1;
str = ui->line1->text().split(" ");
QVector<int> intArray;
QString s;
foreach(s,str) intArray+=s.toInt();
for(int i=0; i<intArray.length(); i++) result*=intArray[i];
QString res = QString::number(result);
ui->result->setText(res);
}
void Widget::on_div_clicked()
{
QStringList str;
int result;
str = ui->line1->text().split(" ");
QVector<int> intArray;
QString s;
foreach(s,str) intArray+=s.toInt();
result=intArray[0];
for(int i=1; i<intArray.length(); i++) result/=intArray[i];
QString res = QString::number(result);
ui->result->setText(res);
}
Файл widget.ui:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Widget</class>
<widget class="QWidget" name="Widget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>579</width>
<height>412</height>
</rect>
</property>
<property name="windowTitle">
<string>Lab 006</string>
</property>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>30</x>
<y>30</y>
<width>441</width>
<height>351</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLineEdit" name="line1">
<property name="text">
<string>Введите сюда два операнда через пробел</string>
</property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="result">
<property name="enabled">
<bool>true</bool>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="text">
<string/>
</property>
<property name="frame">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QPushButton" name="minus">
<property name="geometry">
<rect>
<x>490</x>
<y>130</y>
<width>80</width>
<height>61</height>
</rect>
</property>
<property name="text">
<string>-</string>
</property>
</widget>
<widget class="QPushButton" name="plus">
<property name="geometry">
<rect>
<x>491</x>
<y>48</y>
<width>80</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>+</string>
</property>
</widget>
<widget class="QPushButton" name="mul">
<property name="geometry">
<rect>
<x>490</x>
<y>220</y>
<width>80</width>
<height>61</height>
</rect>
</property>
<property name="text">
<string>*</string>
</property>
</widget>
<widget class="QPushButton" name="div">
<property name="geometry">
<rect>
<x>490</x>
<y>320</y>
<width>80</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>/</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
3. Скриншоты работы программы
Рисунок 1 - Стартовое окно
Рисунок 2 - Сложение положительных чисел
Рисунок 3 - Сложение отрицательных чисел
Рисунок 4 - Сложение более двух чисел
Рисунок 5 - Вычитание
Рисунок 6 - Умножение
Рисунок 7 - Деление