- •Содержание
- •Лабораторная работа № 1 Тема: «Знакомство со средой Qt creator. Простые диалоговые приложения»
- •Пример 1: Программа, вычисляющая вещественный остаток от деления двух вещественных чисел
- •Пример 2: Программа, которая находит квадратный корень числа.
- •Пример 3: Программа, которая иллюстрирует использование стандартных сигналов и слотов.
- •Пример 4: Программа, которая вычисляет значение арифметического выражения
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 2 Тема: «Отладка программы»
- •Пошаговое выполнение программы
- •Задания для самостоятельного выполнения
- •Пример 2: программа, которая выводит значения функции на заданном отрезке с помощью списка listWidget
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 4 Тема: «Работа со строками» п ример 1: программа, которая переводит число из 16-ой системы в 10-ую. При вводе выполняется проверка вводимых символов.
- •Пример 2: программа, которая считывает строку символов, состоящую из русских букв, запятых и пробелов и выводит на экран множество символов этой строки.
- •Пример 3: программа, которая считывает текст из элемента tetxEdit и выводит в столбик числа, содержащиеся в тексте с помощью другого элемента типа textEdit.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 5 Тема: «Главные окна. Меню. Работа с файлами» Пример 1: программа, которая считывает текст из файла и выводит его в главном окне; используется файл ресурсов.
- •Пример 2: программа, которая считывает текст из файла и половину строк переписывает в другой файл; используются специальные окна для работы с файлами.
- •Пример 3: программа, которая считывает текст из файла и подсчитывает количество видимых символов и количество русских букв.
- •Задания для самостоятельного выполнения
- •Пример 2: программа, в которой используется область отсечения qRegion и котекстное меню для выбора способа заливки этой области.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 7
- •Пример 1: программа, которая рисует траектории движения мыши при нажатой левой кнопке выбранным цветом и стирает рисунок при щелчке правой кнопкой мыши.
- •Пример 2: программа, которая рисует окружности с помощью мыши (окружность видима в процессе построения). Нарисованные окружности можно сохранить в файле и загрузить из файла.
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
Лабораторная работа № 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).

Для того, чтобы посмотреть текст программы, нажмите кнопку 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.