
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Laboratornyy_praktikum_po_programmirovaniyu_v_s...doc
X
- •Содержание
- •Лабораторная работа № 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 Тема: «Работа со строками» п ример 1: программа, которая переводит число из 16-ой системы в 10-ую. При вводе выполняется проверка вводимых символов.
Спроектируйте окно как показано на рисунке.
Добавьте слот для кнопки «Перевести» и напишите код, показанный ниже.
#include "dialog.h" #include "ui_dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); adjustSize(); // делаем размеры окна минимально-необходимыми QRegExp regExp("[A-Fa-f0-9]{,10}"); // задаем набор допустимых символов и их максимальное количество QRegExpValidator* valid = new QRegExpValidator(regExp, this); // создаем указатель на объект валидатор для проверки вводимых символов ui->lineEdit->setValidator(valid); // устанавливаем для первого окна валидатор } Dialog::~Dialog() { delete ui; } void Dialog::on_pushButton_clicked() { int dec = 0; // десятичное значение QString str = ui->lineEdit->text(); // прочитали 16-ое число str = str.toUpper(); // сделали все буквы прописными for (int i=0; i<str.length(); ++i) // проходим по 16-му числу { char ch = str[i].toAscii(); // выполняем преобразование кода каждой цифры в код ASCII int k = 0; // число, соответствующее 16-ой цифре if (ch <= '9') // если десятичная цифра k = ch -'0'; // вычитаем код нуля else k = ch - 'A' + 10; // если буква, вычитаем код буквы 'A' и добавляем 10 dec = dec*16 + k; // вычислем значение 10-го числа по схеме Горнера } ui->lineEdit_2->setText(QString::number(dec)); // выводим 10-ое число ui->lineEdit->setSelection(0, 10); // выделяем содержимое окна для ввода }
Пример 2: программа, которая считывает строку символов, состоящую из русских букв, запятых и пробелов и выводит на экран множество символов этой строки.
Спроектируйте окно как показано на рисунке.
#include"dialog.h" #include "ui_dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); QRegExp reg(trUtf8("[а-яА-Я, ]+")); // регулярное выражение, описывающее набор допустимых символов QRegExpValidator* valid = new QRegExpValidator(reg, this); // объявляем указатель на объект валидатор, использующий регулярное выражение ui->lineEdit->setValidator(valid); /* устанавливаем валидатор для элемента lineEdit, предназначенного для ввода исходных данных */ connect(ui->lineEdit, SIGNAL(textChanged(QString)),
this, SLOT(SetofSymbols(QString))); /* соединяем сигнал об изменении содержимого строки со слотом, который будет вызываться в ответ на это изменение */ }
Добавьте в файл dialog.h объявление слота:
public slots: void SetofSymbols(QString);
Добавьте в файл dialog.cpp определение слота:
// Обратите внимание на то, что исходная строка автоматически передается слоту: void Dialog::SetofSymbols(QString str) { QList<QChar> rez; // список символов для создания множества for (int i = 0; i<str.length(); ++i) // перебираем все символы исходной строки if (!rez.contains(str[i])) // если символ не содержится во множестве rez << str[i]; // добавляем его в список qSort(rez); // сортируем список QString strRez; // строка для вывода foreach(QChar ch, rez) // каждый символ списка добавляем в строку strRez += ch; ui->lineEdit_2->setText(strRez); // выводим результат }
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]