Отчеты по лабам / ООП. Лаб 6 Зарецкий Д.Е Вар 9
.docx
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ "САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА"
Факультет инфокоммуникационных сетей и систем
Кафедра программной инженерии и вычислительной техники
ЛАБОРАТОРНАЯ РАБОТА №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
|