- •Содержание
- •Лабораторная работа № 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: программа, которая рисует окружности с помощью мыши (окружность видима в процессе построения). Нарисованные окружности можно сохранить в файле и загрузить из файла.
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
Пример 4: Программа, которая вычисляет значение арифметического выражения
В этой программе будет показано как можно организовать ввод потоком нескольких элементов данных из одного элемента управления. Кроме того программа иллюстрирует использование оператора switch для проверки символов.
С
проектируйте
диалоговое окно как показано на рисунке.
Используйте Label, Line Edit, Push Button, Label и Text
Edit.
Для того, чтобы текст надписи переносился на другую строку, в свойствах Label в строке wordWrap установите флажок.
Создайте слот для кнопки и напишите код, приведенный ниже.
#include "dialog.h"
#include "ui_dialog.h"
#include <QtGui> // обеспечивает математические и многие другие функции
#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);
// обеспечили возможность вывода текста на русском языке
double a, b;
char op;
QString str = ui->lineEdit->text(); // прочитали выражение
QTextStream in(&str, QIODevice::ReadOnly);
// преобразовали строку в поток символов in
in >> a; // прочитали первое число
do
{
in >> op;
} while (op == ' '); // пропустили пробелы и прочитали знак операции
in >> b; // прочитали второе число
QString message;
bool flag = true;
double c=0;
switch (op) // проверяем знак операции
{
case '+': c = a + b; break;
case '-': c = a - b; break;
case '*': c = a * b; break;
case '/': if (b) c = a / b;
else { flag = false; message = "Второе число должно быть не равно 0";} break;
case '%': c = int(a) % int(b); break;
case '^': if (finite(c = pow(a, b)));
// проверяем возможность выполнения операции
else {flag = false; message = "Первое число должно быть неотрицательным";} break;
default: flag = false; message = "Неверный знак операции";
}
if (flag)
ui->textEdit->setText(QString::number(c));
else ui->textEdit->setText(message);
}Задания для самостоятельного выполнения
1. Написать программу
на основе класса QDialog, которая решает
квадратное уравнение вида
для любых a, b, c (программа должна иметь
6 ветвей).
2. Написать программу на основе класса QWidget, которая решает систему двух линейных уравнений.
Указание: см. Касаткин С., Раткевич И., Травова Н. Н. «Лабораторный практикум по курсу “Основы алгоритмизации” в среде Microsoft Visual Studio 2005»
Лабораторная работа № 2 Тема: «Отладка программы»
Для того, чтобы найти логическую ошибку в программе, можно использовать вывод отладочных сообщений, например выводить результаты промежуточных вычислений.
В качестве примера создадим программу, которая проверяет, является ли число степенью двойки. Для вывода результатов промежуточных вычислений используем оператор потокового вывода qDebug(). Использование этого оператора аналогично использованию потокового вывода cout.
С
оздайте
проект на основе диалогового окна и
спроектируйте его как показано на
рисунке.
Первое окно по умолчанию имеет идентификатор lineEdit, второе — lineEdit_2.
Создайте слот для кнопки «Проверить» и напишите код как показано ниже.
#include "dialog.h"
#include "ui_dialog.h"
#include <QtDebug> // Обеспечивает работу qDebug()
#include <QtextCodec> // Обеспечивает спользование кириллицы
#include <math.h> // Обеспечивает работу математических функций
#include <QMessageBox> // Обеспечивает использование окна сообщений
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);
int n = ui->lineEdit->text().toInt(); // считываем целое число
if ( n >= 0)
{
int s = 1;
while (s < n)
{
s *= 2; // вычисляем степень 2
qDebug() << "Степень 2: "<< s;
// выводим очередную степень в окно Application Output
}
// выводим результат:
if (s==n) ui->lineEdit_2->setText("Это степень 2");
else ui->lineEdit_2->setText("Это не степень 2");
}
else
{
ui->lineEdit_2->setText("");
QMessageBox::critical(this, "Сообщение об ошибке",
"Число должно быть >= 0");
}
}При использовании окна сообщений QMessageBox первый параметр - указатель на родительское окно, второй - заголовок окна, третий - непосредственно сообщение.
Запустите программу (<Ctrl>+<R>), задайте число, нажмите кнопку и посмотрите результат работы qDebug() в окне Application Output.
Если по какой-то причине Ваша программа зацикливается, используйте системный монитор (System | Administration | System Monitor). В списке Processes найдите имя Вашего проекта, щелкните по нему правой кнопкой мыши и выберите «Kill Process».
