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

Отчеты по лабам / ООП. Лаб 6 Зарецкий Д.Е Вар 9

.docx
Скачиваний:
9
Добавлен:
05.11.2021
Размер:
176.74 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ "САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА"

Факультет инфокоммуникационных сетей и систем

Кафедра программной инженерии и вычислительной техники

ЛАБОРАТОРНАЯ РАБОТА №6

«ПРОЕКТ С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ QT»

по дисциплине «Объектно-ориентированное программирование»

Выполнил:

студент 2 курса

дневного отделения

группы ИКПИ-06

Зарецкий Д.Е.

Санкт-Петербург

2021

А. Постановка задачи

В настоящей лабораторной работе необходимо разработать приложение, обладающее графическим интерфейсом с использованием средств библиотеки Qt. Вторая группа заданий (задач), вариант 9. Манипуляция содержимым компонентов LineEdit.

Задача 9 

На форме имеются два компонента LineEdit, горизонтально скомпонованные. Обеспечить выполнение следующих операций:

  • reverse(strEdtLeft)

  • reverse(strEdtRight).

  • reverseAll().

  • swap(strEdtLeft, strEdtRight).

  • concat(strEdtLeft, strEdtRight).

  • concat(strEdtRight, strEdtLeft).

На форме находятся 4 компонента: QWidget, QVBoxLayout, QPushButton, QLineEdit. Компоненты LineEdit служат для хранения строк, QVBoxLayout – для организации элементов, а QWidget — вывода результатов вычислений. Компоненты PushButton нужны для преобразования строк. Также на компонентах LineEdit предусмотрены две кнопки из встроенного функционала QT для удаления содержимого.

Б. Интерфейс

В. Содержимое файлов

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_line1rev_clicked();

void on_line2rev_clicked();

void on_reverseAll_clicked();

void on_swap_clicked();

void on_concatTop_clicked();

void on_concatBottom_clicked();

private:

Ui::Widget *ui;

};

#endif // WIDGET_H

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_line1rev_clicked()

{

QString str = ui->line1->text();

QChar tmp;

int n = str.length();

for(int i=0; i<n/2; i++) {

tmp=str[i];

str[i]=str[n-i-1];

str[n-i-1]=tmp;

}

ui->line1->setText(str);

}

void Widget::on_line2rev_clicked()

{

QString str = ui->line2->text();

QChar tmp;

int n = str.length();

for(int i=0; i<n/2; i++) {

tmp=str[i];

str[i]=str[n-i-1];

str[n-i-1]=tmp;

}

ui->line2->setText(str);

}

void Widget::on_reverseAll_clicked()

{

QString str = ui->line1->text();

QChar tmp;

int n = str.length();

for(int i=0; i<n/2; i++) {

tmp=str[i];

str[i]=str[n-i-1];

str[n-i-1]=tmp;

}

ui->line1->setText(str);

str = ui->line2->text();

n = str.length();

for(int i=0; i<n/2; i++) {

tmp=str[i];

str[i]=str[n-i-1];

str[n-i-1]=tmp;

}

ui->line2->setText(str);

}

void Widget::on_swap_clicked()

{

QString str1, str2, tmp;

str1 = ui->line1->text();

str2 = ui->line2->text();

tmp = str1;

str1 = str2;

str2= tmp;

ui->line1->setText(str1);

ui->line2->setText(str2);

}

void Widget::on_concatTop_clicked()

{

QString str1, str2;

str1 = ui->line1->text();

str2 = ui->line2->text();

str1 += str2;

ui->line1->setText(str1);

}

void Widget::on_concatBottom_clicked()

{

QString str1, str2;

str1 = ui->line1->text();

str2 = ui->line2->text();

str2 += str1;

ui->line2->setText(str2);

}

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="QPushButton" name="reverseAll">

<property name="enabled">

<bool>true</bool>

</property>

<property name="geometry">

<rect>

<x>10</x>

<y>10</y>

<width>161</width>

<height>41</height>

</rect>

</property>

<property name="text">

<string>Развернуть обе строки</string>

</property>

<property name="autoExclusive">

<bool>false</bool>

</property>

<property name="flat">

<bool>false</bool>

</property>

</widget>

<widget class="QPushButton" name="swap">

<property name="geometry">

<rect>

<x>400</x>

<y>10</y>

<width>161</width>

<height>41</height>

</rect>

</property>

<property name="text">

<string>Поменять строки местами</string>

</property>

</widget>

<widget class="QWidget" name="layoutWidget">

<property name="geometry">

<rect>

<x>30</x>

<y>30</y>

<width>511</width>

<height>341</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="QPushButton" name="line1rev">

<property name="text">

<string>Развернуть верхнюю строку</string>

</property>

</widget>

</item>

<item>

<widget class="QPushButton" name="concatTop">

<property name="text">

<string>Конкатенация верхней строки с нижней </string>

</property>

</widget>

</item>

<item>

<widget class="QLineEdit" name="line2">

<property name="text">

<string>Введите вторую строку здесь</string>

</property>

<property name="clearButtonEnabled">

<bool>true</bool>

</property>

</widget>

</item>

<item>

<widget class="QPushButton" name="concatBottom">

<property name="text">

<string>Конкатенация нижней строки с верхней </string>

</property>

</widget>

</item>

<item>

<widget class="QPushButton" name="line2rev">

<property name="text">

<string>Развернуть нижнюю строку</string>

</property>

</widget>

</item>

</layout>

</widget>

</widget>

<resources/>

<connections/>

</ui>

main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

Widget w;

w.show();

return a.exec();

}

Lab_006.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