Пример 1: Программа, вычисляющая вещественный остаток от деления двух вещественных чисел

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

Тема: «Знакомство со средой Qt creator.
Простые диалоговые приложения»

Перейдите в среду Ubuntu и выберите в меню Applications | Programming | Qt Creator. Должно появиться окно среды программирования Qt Creator.

В центральной части экрана появится окно «Qt Creator»для выбора проекта (проект - это набор файлов, предназначенный для создания исполняемого файла, содержащего программу для решения задачи). В этом окне нажмите кнопку «Create Project».

 

Появится окно «New Project» (см. на следующей странице). В этом окне оставьте установки по умолчанию и нажмите кнопку <Choose...>

 

В следующем окне «Qt Gui Application» в строке «Name» укажите имя проекта, например: Ivanov. Имя проекта должно быть записано латинскими буквами. Студенты, создавая проект для выполнения задания лабораторной работы, в название проекта должны включать свою фамилию (записанную латинскими буквами). Нажмите кнопку <Next>.

 

В следующем окне «Class Information» в списке Base class выберите QDialog, остальные установки можно оставить по умолчанию, тогда класс Dialog будет описывать главное окно программы. Нажмите кнопку <Next>.

В следующем окне указан каталог, в котором создан проект, и приведен список файлов, составляющих проект. Нажмите кнопку <Finish>.

Появится окно редактора для проектирования вида окна программы.. В центральной части находится заготовка окна, слева — панель управляющих элементов, справа — список добавленных на панель элементов и окно свойств выделенного элемента.


Пример 1: Программа, вычисляющая вещественный остаток от деления двух вещественных чисел

Создадим окно программы, которое показано на рисунке.

 

Для того, чтобы сделать надписи, испульзуют элемент Label (метку), который находится на панели управляющих элементов в разделе «Display Widgets». Список управляющих элементов длинный, поэтому, чтобы найти нужный раздел, используйте полосу прокрутки. Для облегчения поиска нужного элемента можно использовать строку «Filter», которая находится в верхней части панели управляющих элементов; наберите в этой строке «Lab» и элемент label будет найти гораздо легче.

Управляющие элементы перетаскивают мышью на диалоговую панель (прижимая левую кнопку). Трижды перетащите Label на диалоговую панель и расположите их слева в столбик. Для того, чтобы сделать надпись, сделайте двойной щелчок по нужному элементу. Сделайте надписи как показано на рисунке.

Для ввода исходных данных и вывода результатов используем элементы, с которыми связан однострочный текстовый редактор: «Line Edit». Справа от каждой надписи расположите эти элементы.

Для выполнения нужных действий используем две кнопки Push Button. Расположите их по правому краю диалоговой панели. Сделайте надписи на них как показано на рисунке.

Можно задать нужный способ выравнивания текста для управляющего элемента в окне свойств, которое располагается в правой части экрана. Выделите с помощью мыши все элементы Line Edit и в окне свойств в разделе alignment в строке Horizontal выберите AlignHCenter (выравнивание по горизонтали: по центру).

Для того, чтобы выровнить все управляющие элементы относительно друг друга используют элементы, которые называются Layout. Vertical — для выравнивания в виде столбца, Horizontal — в виде строки, Grid - в виде таблицы, Form — в виде таблицы из двух столбцов. Выделите все элементы (< Ctrl > + < A >) и на горизонтальной панели инструментов (под главным меню) нажмите кнопку <Lay Out in a Grid> (название кнопки можно увидеть, если задержать на ней указатель мыши). Элементы будут выровнены относительно сетки, обозначенной красной рамкой.

 

Для того, чтобы посмотреть текст программы, нажмите кнопку Edit на левой границе среды программирования. Разверните содержание разделов, щелкнув по треугольникам, расположенным слева от названия разделов (треугольники должны быть направлены вниз). Для того, чтобы открыть файл, сделайте двойной щелчок мышью по его названию. Откройте файл dialog.cpp. Вставьте в конструктор вызов функции adjustSize() как показано ниже. Эта функция сделает размеры окна мини­мально-необходимыми.

 

#include "dialog.h"

#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent):

QDialog(parent),

ui(new Ui::Dialog)

{

ui->setupUi(this);

adjustSize();

}

Dialog::~Dialog()

{

delete ui;

}

Для того, чтобы программа выполняла нужные действия, необходимо доба­вить в программу функции, обрабатывающие определенные события. Такие функ­ции называются слотами (slot).

Вернитесь к редактору вида диалоговой панели, сделав двойной щелчок по имени dialog.ui  в разделе Forms. Щелкните правой кнопкой мыши по кнопке «Выход» на диалоговой панели и в появившемся контекстном меню выберите «Go to slot». В появившемся окне оставьте установки по-умолчанию и нажмите кнопку <Ok>. Функция будет вызываться при появлении сигнала clicked() (щелчок по этой кнопке). Названия элементов управления генерируются автоматически, при этом номер элемента зависит от того, в какой последовательности он был добавлен на диалоговую панель. Предполагается, что кнопка «Выход» была добавлена второй, соответственно ее идентификатором будет pushButton_2 и слот, обрабатывающий нажатие этой кнопки, будет называться on_pushButton_2_clicked(). Добавьте внутрь слота вызов функции close() как показано ниже.

 

#include "dialog.h"

#include "ui_dialog.h"

#include <math.h>

Dialog::Dialog(QWidget *parent):

QDialog(parent),

ui(new Ui::Dialog)

{

ui->setupUi(this);

adjustSize();

 

}

Dialog::~Dialog()

{

delete ui;

}

void Dialog::on_pushButton_2_clicked()

{

close();

}

Постройте исполняемый файл (<ctrl>+<B>) и запустите программу (<ctrl>+ <R>). Закройте окно кнопкой <Выход>. Конечно любое окно можно закрыть и без этой кнопки, щелкнув мышью по крестику в заголовке окна или нажав <Alt>+ <F4> на клавиатуре.

 

Добавьте слот для кнопки «Остаток». Мы будем вычислять вещественный остаток от деления с помощью функции fmod(). Эта и другие математические функции требуют подключения файла math.h (см. выше текст файла dialog.cpp).

Для того, чтобы наша программа решала поставленную задачу, необходимо прочитать два числа, вычислить остаток от деления и отобразить результат. Элементы lineEdit работают со строками символов (с текстом), но текст можно преобразовать в число и наоборот с помощью специальных функций.

Для того, чтобы прочитать число, нужно набрать на клавиатуре имя объекта ui и нажать на клавиатуре клавишу «точка» ('.'). Появится список, в котором нужно выбрать идентификатор элемента (lineEdit). Опять нажать точку и выбрать text. Таким образом мы получим строку текста, которую пользователь набрал в окне. Далее нужно опять нажать точку и выбрать функцию преобразования строки в число.

Для того, чтобы отобразить результат, необходимо из числа сделать строку символов с помощью функции number из класса Qstring и отобразить эту строку в третьем окне.

В конечном итоге мы должны получить функцию, приведенную ниже:

 

void Dialog::on_pushButton_clicked()

{

double a = ui->lineEdit->text().toDouble();

double b = ui->lineEdit_2->text().toDouble();

double c = fmod(a, b);

ui->lineEdit_3->setText(QString::number(c));

}

Запустите программу и проверьте ее работу. Окно для ввода первого числа должно быть активно сразу же при запуске программы. Для этого оно должно иметь номер 1. Для установки правильной нумерации перейдите в режим редакти­рования окна и на панели инструментов нажмите кнопку <Edit Tab Order>. Щелкаяямышью по номерам элементов установите нумерацию как показано на рисунке.

При вводе данных переход в следующее окно должен осуществляться при нажатии клавиши <Tab> в соответствии с нумерацией. В окне для вывода результата следует запретить ввод, для этого в окне свойств в строке focusPolicy выберите из списка NoFocus.

 

 

Для выхода из режима нумерации нажмите на панели инструментов кнопку <Edit Widgets>.

Проверьте еще раз работу программы и закройте проект (File | Close all projects).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: