Лаба 1 ООП (отчёт)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ,

МОЛОДЕЖИ И СПОРТА УКРАИНЫ

Национальный аэрокосмический университет им. Н.Е. Жуковского

«Харьковский авиационный институт»

Кафедра систем управления летательными аппаратами

Лабораторная работа №1

по дисциплине «Основы алгоритмизации и программирование»

Тема: «РАЗРАБОТАТЬ GUI-ПРИЛОЖЕНИЕ

БАЗОВОЙ ФУНКЦИОНАЛЬНОСТИ»

ХАИ.301.051103.312.1 ЛР

Выполнил студент гр. 312 А.С.Алексеев (№ группы) (Ф.И.О.)

___________________________________

(подпись, дата)

Проверил ассист.____________________

(ученая степень, ученое звание) _______________________К.И. Руденко

(подпись, дата) (Ф.И.О.)

ассист._____________________________

(ученая степень, ученое звание) _____________________Е.А. Андронова

(подпись, дата) (Ф.И.О.)

2014

Цель работы: разработать GUI-приложение базовой функциональности.

Задание 1. Используя материал, изложенный в лекциях, разработать приложение, решающее следующие задачи:

создание объекта-приложения QАpplication;

создание формы с несколькими элементами управления; 3) обработка основных событий.

Для реализации данного задания построен алгоритм в виде блок-схемы

(рис.1.1).

Н

а

ч

а

л

о

К

о

н

е

ц

(

1

)

(

3

)

Н

а

ч

а

л

о

К

о

н

е

ц

(

1

)

(

3

)

Рисунок 1.1 – Алгоритм выполнения 1 задания

Пояснения к рис. 1.1:

создать объект класса QLabel (метка) с текстом «Qt is cute! ^^)» и сохранить его в поле label;

устанавливаем свойства объекта label так, чтобы текст размещался по центру;

устанавливаем компонент label как центральный виджет главного окна приложения.

Листинг mainwindow.h к заданию 1

#ifndef MAINWINDOW_H

#define MAINWINDOW_H #include

class MainWindow : public QMainWindow

{

Q_OBJECT public:

MainWindow(QWidget *parent = 0);

~MainWindow();

};

#endif // MAINWINDOW_H

Листинг mainwindow.cpp к заданию 1

#include «mainwindow.h»

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

{

QLabel* label = new QLabel («Sample Text»);

label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); setCentralWidget(label);

}

MainWindow::~MainWindow()

{

}

В результате выполнения данной программы, на экране появляется окно

(рис. 1.2).

Рисунок 1.2 – Pезультат выполнения первого задания

Вывод к заданию 1: написано простейшее консольное приложение для вывода статичного текста на экран.

Задание 2. Разработать приложение, позволяющее вводить текст в поле (объект класса QLineEdit). Так же приложение должно содержать три кнопки: Init (вставляет в поле фиксированный текст), Clear (очищает поле ввода), Quit (закрывает окно приложения).

Для реализации данного задания построен алгоритм в виде блок-схемы

(рис.1.3).

Н

а

ч

а

л

о

К

о

н

е

ц

(

1

)

.

.

(

1

7

)

Н

а

ч

а

л

о

К

о

н

е

ц

(

1

)

.

.

(

1

7

)

Рисунок 1.3 – Алгоритм метода MainWindow::MainWindow (второе задание)

Пояснения к рис. 1.3:

создаем объект класса QLabel (метку) с текстом «Enter text:» и сохраняем в поле lText;

создаем объект класса QLineEdit (поле ввода), и сохраняем в поле leText;

создаем объект класса QPushButton (кнопку) с текстом «Init», и сохраняем в поле pbInit;

создаем объект класса QPushButton (кнопку) с текстом «Clear», и сохраняем в поле pbClear;

создаем объект класса QPushButton (кнопку) с текстом «Quit», и сохраняем в поле pbQuit;

создаем объект класса QGridLayout (размещение-сетку), и сохраняем в поле glMain;

устанавливаем виджет lText на размещении glMain по координатам (0,0);

устанавливаем виджет leText на размещении glMain по координатам (0, 1,

1, 2);

устанавливаем виджет pbInit на размещении glMain по координатам (1, 0);

устанавливаем виджет pbClear на размещении glMain по координатам

(1, 1);

устанавливаем виджет pbQuit на размещении glMain по координатам (1, 2);

создаем объект класса QWidget (виджет), и сохраняем в переменной wCenter;

связываем размещение-сетку glMain с виджетом wCenter;

устанавливаем wCenter центральным виджетом главного окна приложения;

связываем сигнал clicked() кнопки pbInit со слотом initText() главного окна приложения;

связываем сигнал clicked() кнопки pbClear со слотом clear() поля ввода leText;

связываем сигнал clicked() кнопки pbQuit со слотом close() главного окна приложения.

Рисунок 1.4 – Алгоритм метода MainWindow::initText (второе задание)

Пояснения к рис. 1.4:

(1) задаем текст “Today is good day!” полю leText.

Листинг mainwindow.h к заданию 2

#ifndef MAINWINDOW_H

#define MAINWINDOW_H #include

class MainWindow : public QMainWindow

{

Q_OBJECT protected: QLabel* lText;

QLineEdit* leText;

QPushButton* pbInit;

QPushButton* pbClear;

QPushButton* pbQuit;

QGridLayout* glMain; QWidget* wCenter; public:

MainWindow(QWidget *parent = 0);

~MainWindow(); public slots:

void initText();

};

#endif // MAINWINDOW_H

Листинг mainwindow.cpp к заданию 2

#include «mainwindow.h»

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

{

lText = new QLabel(«Enter text:»); leText = new QLineEdit; pbInit = new QPushButton («Init»); pbQuit = new QPushButton («Quit»); pbClear = new QPushButton («Clear»); glMain = new QGridLayout; glMain->addWidget(lText, 0, 0); glMain->addWidget(leText, 0, 1, 1, 2); glMain->addWidget(pbInit, 1, 0); glMain->addWidget(pbClear, 1, 1); glMain->addWidget(pbQuit, 1, 2); wCenter = new QWidget; wCenter->setLayout(glMain); this->setCentralWidget(wCenter);

connect(pbQuit, SIGNAL(clicked()), this, SLOT(close())); connect(pbInit, SIGNAL(clicked()), this, SLOT(initText())); connect(pbClear, SIGNAL(clicked()), leText, SLOT(clear()));

}

MainWindow::~MainWindow()

{ }

void MainWindow::initText() {

leText->setText(«Some predefined text»);

}

В результате выполнения программы 2, появляется следующее окно

(рис. 1.5).

Рисунок 1.5 – Результат выполнения задания 2

Вывод к заданию 2: программа отображает на экране окно с текстовым полем ввода и тремя кнопками Init, Clear, Quit, которые выполняют соответствующие функции.

Задание 3: в соответствии с вариантом разработать интерфейс и реализовать приложение с помощью QtDesigner. Приложение должно реализовывать заданное поведение компонентов при изменении размеров диалогового окна. Кнопка Quit должна закрывать окно.

Для реализации данного задания построен алгоритм в виде блок-схемы

(рис. 1.6).



Страницы: 1 | 2 | Весь текст