Добавил:
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); // выводим результат
}
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
