|
QT ортасы. Qt ортасында бағдарламалау зертханалық жұмыстар. Лабораторная работа 3 20 Тема Ипользование вспомогательных функций и вывод нескольких чисел c помощью одного элемента управления 20
Тема: «Работа со строками» П ример 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; ilineEdit_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 rez; // список символов для создания множества for (int i = 0; ilineEdit_2->setText(strRez); // выводим результат }
Пример 3: программа, которая считывает текст из элемента tetxEdit и выводит в столбик числа, содержащиеся в тексте с помощью другого элемента типа textEdit.
Спроектируйте окно как показано на рисунке, используя 2 элемента типа textEdit.
В файл dialog.cpp внесите код, показанный ниже:
#include "dialog.h" #include "ui_dialog.h" #include // для создания потока Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); /* связываем сигнал об изменении текста в первом окне и слот FindWords(), который будет из текста выбирать слова, являющиеся числами */ connect(ui->textEdit, SIGNAL(textChanged()), this, SLOT(FindWords())); }
В файл dialog.h вставьте объявление слота:
public slots: void FindWords();
В файле dialog.cpp напишите определение слота: void Dialog::FindWords() { QString str = ui->textEdit->toPlainText(); // считываем текст из окна textEdit (текст может быть многострочным) QTextStream in(&str, QIODevice::ReadOnly); // создаем поток для чтения слов из текста QString rez; // текст, который будет выводиться во втором окне QString number; // строка, в которую будет считываться одно слово из текста while (!in.atEnd()) // пока поток не закончен { in >> number; // считываем одно слово QDoubleValidator* validator = new QDoubleValidator; // создаем указатель на валидатор int pos = 0; /* позиция в строке, с которой будет начинаться проверка (эта переменная нужна для функции validate() ) */ if(validator->validate(number, pos)) // проверяем слово number rez += number + '\n'; // если слово является числом, добавляем его к тексту } ui->textEdit_2->setText(rez); // выводим полученные числа на экран }
Задания для самостоятельного выполнения Из двух вводимых с клавиатуры строк, состоящих только из слов, записанных латинскими буквами, разделенных запятыми и пробелами (с проверкой правильности ввода), создать третью строку, которая должна содержать символы, присутствующие одновременно в обеих исходных строках. В результирующую строку каждый символ должен входить только один раз. (См. пример 2)
Из двух вводимых с клавиатуры строк, состоящих только из слов, записанных русскими буквами, разделенных точками и пробелами (с проверкой правильности ввода), создать третью строку, которая должна содержать символы, присутствующие только во второй строке. В результирующую строку каждый символ должен входить только один раз. (См. пример 2) Создать приложение, которое считывает строку текста, состоящую только из слов записанных латинскими буквами, разделенных запятыми и пробелами (с проверкой правильности ввода). Если за запятой не стоит пробел, вставить его и получившуюся строку вывести на экран. Создать приложение, которое считывает строку текста, состоящую только из слов записанных русскими буквами, разделенных точками и пробелами (с проверкой правильности ввода). Если перед точкой стоят пробелы, удалить их и получившуюся строку вывести на экран. Создать приложение, которое считывает строку текста, состоящую только из слов записанных латинскими буквами, разделенных точками и пробелами (с проверкой правильности ввода). Если первое слово, идущее за точкой, начинается с маленькой буквы, заменить эту букву большой и получившуюся строку вывести на экран. Создать приложение, которое считывает строку текста, состоящую только из чисел, разделенных пробелами (с проверкой правильности ввода). Удалить лишние пробелы между числами, т.е. из нескольких идущих подряд пробелов оставить только один. Получившуюся строку вывести на экран. Создать приложение, которое считывает строку текста, состоящую только из слов, записанных русскими буквами, разделенных пробелами (с проверкой правильности ввода). Если в слове встречаются две идущие подряд большие буквы, заменить вторую большую букву маленькой. Создать приложение которое считывает строку текста и подсчитывает, сколько раз заданный символ встречается в этой строке. При вводе символа не позволять пользователю вводить более одного. Создать приложение, которое считывает две строки символов и проверяет, является ли вторая строка анаграммой первой (т.е. можно ли получить вторую строку путем перестановки символов первой), например: "корт" и "крот". Указание: отсортируйте обе строки и сравните. Создать приложение, которое считывает строку символов, состоящую только из цифр и латинских букв (с проверкой правильности ввода). Вставить после каждого символа запятую и полученную строку вывести на экран. Создать приложение, которое считывает строку текста, состоящую только из цифр и запятых (с проверкой правильности ввода). Удалить запятые из строки и результат вывести на экран. Создать приложение, которое считывает строку текста, состоящую только из русских букв и запятых (с проверкой правильности ввода). Заменить запятые пробелами и результат вывести на экран. Создать приложение, которое считывает строку текста, содержащую фамилию, имя и отчество. Заменить фамилию на новую, которая вводится в другом окне редактирования. Полученную строку вывести на экран. Создать приложение, которое считывает строку текста и переносит первое слово в конец строки. Результат вывести на экран. Создать приложение, которое считывает строку текста и переносит последнее слово в начало строки. Результат вывести на экран. Создать приложение, которое считывает строку текста и выводит на экран те слова, которые начинаются и заканчиваются на одну и ту же букву. Создать приложение, которое считывает строку текста и выводит на экран те слова, которые начинаются с цифры. Создать приложение, которое считывает строку текста и после второго слова вставляет новое, которое вводится в другом окне редактирования. Полученную строку вывести на экран.
Лабораторная работа № 5 |
|
|