
- •Содержание
- •Лабораторная работа № 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: программа, которая рисует окружности с помощью мыши (окружность видима в процессе построения). Нарисованные окружности можно сохранить в файле и загрузить из файла.
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
Пример 2: Программа, которая находит квадратный корень числа.
П
рограмма
будет находить неотрицательный корень
вещественного числа. Квадратный корень
можно вычислить, только если подкоренное
выражение неотрицательно, поэтому
при недопустимом введенном значении
программа будет выдавать сообщение
об ошибке. Сообщение об ошибке может
быть достаточно пространным, поэтому
для вывода результата используем
элемент Text Edit, который автоматически
переносит текст на другую строку.
Спроектируйте диалоговое окно как показано на рисунке. Элементы, которые вы должны добавить: Label, Line Edit, Push Button и Text Edit. Верхние три элемента выровняйте, выделив их и нажав кнопку Lay Out Vertically. Text Edit не включайте в Layout, чтобы иметь возможность изменять его размеры.
Создайте слот для кнопки «Корень» и напишите код, показанный ниже.
#include "dialog.h" #include "ui_dialog.h" #include <math.h> #include <QTextCodec> Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); adjustSize(); // делаем размеры окна минимально-необходимыми } Dialog::~Dialog() { delete ui; } void Dialog::on_pushButton_clicked() { QTextCodec* codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForCStrings(codec); // 2 строчки, приведенные выше, позволяют выводить текст на русском языке double x = ui->lineEdit->text().toDouble(); // считываем число double y; if (x>=0) { y=sqrt(x); // извлекаем квадратный корень ui->textEdit->setText(QString::number(y,'f',5)); // выводим число с точностью 5 цифр после точки } else ui->textEdit->setText("Число должно быть >= 0"); // выводим сообщение об ошибке }
Запустите программу и проверьте ее работу для допустимых и недопустимых исходных данных. Если текст сообщения умещается в одну строку, сделайте окно Text Edit поуже, чтобы увидеть как текст переносится на другую строку.
Пример 3: Программа, которая иллюстрирует использование стандартных сигналов и слотов.
В качестве примера создадим программу, которая отображает введенное целое десятичное число или в двоичном, или в восьмеричном, или в десятичном или в шестнадцатеричном виде. Это легко сделать с помощью элемента LCD Number, который предназначен для отбражени чисел в виде жидко-кристаллического экранчика.
С
оздайте
проект на базе класса QWidget.
Спроектируйте окно как показано на
рисунке, используя элементы: Label, Line
Edit, 4 Push Buttons, LCD Number.
В свойствах LCD Number установите : segment Style : Flat, digitCount : 20 (количество сегментов экрана, т.е. максимальное количество отображаемых цифр). Чем больше задать количество цифр, тем они будут мельче).
Задавать число мы будем с помощью элемента Line Edit. При изменениии числа в окне Line Edit должно изменяться значение в LCD Number. Для обеспечения этой связи можно использовать окно, которое располагается под проектом вида окна. Перейдите на вкладку Signals & Slots Editor и нажмите +. В список связей будет добавлена новая строка. Сделайте двойной щелчок в появившейся строке в первом поле <sender>. В появившемся списке выберите элемент lineEdit. Повторите эти действия в других полях так, чтобы связь была задана как показано на рисунке.
В результате при изменении содержимого элемента Line Edit будет автоматически изменяться содержимое элемента LCD Number.
Добавьте слот для кнопки <bin> и напишите в нем код как показано ниже. Повторите эти действия для других кнопок.
void Widget::on_pushButton_clicked() { ui->lcdNumber->setMode(QLCDNumber::Bin); // двоичное представление ui->lineEdit->setFocus(); } void Widget::on_pushButton_2_clicked() { ui->lcdNumber->setMode(QLCDNumber::Oct); // восьмеричное представление ui->lineEdit->setFocus(); } void Widget::on_pushButton_3_clicked() { ui->lcdNumber->setMode(QLCDNumber::Dec); // десятичное представление ui->lineEdit->setFocus(); } void Widget::on_pushButton_4_clicked() { ui->lcdNumber->setMode(QLCDNumber::Hex); // 16-е представление ui->lineEdit->setFocus(); } Запустите программу и проверьте работу приложения. Обратите внимание на то, что в заголовке окна появилась кнопка «свернуть окно» (её не было в диалоговом окне), но теперь окно появляется в углу экрана. Откройте файл main.cpp и отредактируйте его так, как показано ниже. #include <QtGui/QApplication> #include "widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.move(400,300); // перемещаем окно в центр экрана w.show(); return a.exec(); } Запустите программу.
Закройте проект.