Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчеты по лабам / Лабораторная №6 Акименко

.docx
Скачиваний:
5
Добавлен:
20.12.2021
Размер:
417.32 Кб
Скачать

Дисциплина: Объектно-ориентированное программирование

Группа: ИКПИ-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 - Деление