
- •Лабораторная работа №1
- •Москва 2023
- •Создать виджет с надписью «Архангельский м. В.», задать размер виджета, вывести его на экран. В качестве виджета использовать кнопку (объект button класса qPushButton).
- •Создать текстовую метку при помощи класса qLabel, в текстовой метке записать текст «Архангельский м. В.». Вывести сообщение с использованием указателей и класса qLabel.
- •Повторить предыдущий пункт задания без использования указателей.
- •Создать кнопку при помощи класса qPushButton с текстом «Архангельский м. В.». При нажатии на кнопку должно происходить завершение работы программы.
- •Используя события таймера, через каждые 200 мс выводить в текстовую метку сообщение «Архангельский м. В.».
- •Используя Qt Designer, разместить на форме объект класса qLabel (текстовую метку), в которую необходимо выводить текущее время (ежесекундно).
- •Используя объекты класса qFile, скопировать содержимое одного бинарного файла в другой блоками по 2 символа, при этом осуществить проверку на возможность открытия файлов для чтения и записи.
- •Повторить предыдущий пункт задания с использованием объектов класса qByteArray
- •Используя объекты класса qTextStream, построчно считать содержимое текстового файла и вывести его в консоль.
- •Повторить предыдущий пункт задания с использованием метода readAll(). Записать текстовую информацию в файл, предварительно отформатировав текст.
- •Контрольные вопросы
Используя объекты класса qTextStream, построчно считать содержимое текстового файла и вывести его в консоль.
Создам в папке с проектом файл с именем "here_is_the_text.txt", предварительно записав в него текстовую информацию.
Листинг 13. Содержание файла "main.cpp"
#include <QApplication> //подключили заголовочные файлы с определениями классов QApplication (приложение)
#include <QFile> // QFile (класс для проведения операций с файлами)
#include <QDebug>
int main(int argc, char *argv[ ])
{
QApplication app(argc, argv);
QFile file ("here_is_the_text.txt");
if(file.open(QIODevice::ReadOnly))
{
QTextStream stream(&file);
QString str;
while (!stream.atEnd())
{
str = stream.readLine();
qDebug() << str;
}
if(stream.status()!= QTextStream::Ok)
{
qDebug() << "Ошибка чтения файла";
}
file.close();
}
return app.exec( );
}
Рисунок 12. Вывод текстовой информации из файла " here_is_the_text.txt " в консоль.
Повторить предыдущий пункт задания с использованием метода readAll(). Записать текстовую информацию в файл, предварительно отформатировав текст.
Создам в папке с проектом файл с именем "here_is_the_text.txt", предварительно записав в него текстовую информацию.
Листинг 14. Содержание файла "main.cpp"
#include <QApplication> // подключили заголовочные файлы с определениями классов QApplication (приложение)
#include <QFile> // QFile (класс для проведения операций с файлами)
#include <QBuffer> // QBuffer (позволяет записывать и считывать данные в массив QByteArray, как будто бы это устройство или файл)
#include <QDebug>
int main(int argc, char *argv[ ])
{
QApplication app(argc, argv);
QFile file("here_is_the_text.txt");
if(file.open(QIODevice::ReadOnly))
{
QTextStream stream(&file);
QString str = stream.readAll(); //Методом QTextStream::readAll() можно считать сразу весь текстовый файл в строку.
qDebug()<<str; // Вывод в консоль
if(stream.status()!= QTextStream::Ok)
{
qDebug() << "Ошибка чтения файла";
}
file.close();
}
/*Чтобы записать текстовую информацию в файл,
* необходимо создать объект класса QFile и воспользоваться оператором <<.
* Перед записью можно провести необходимые преобразования строки.*/
QFile file1("new.txt");
QString str = "Архангельский Максим БСТ-2154";
if (file1.open(QIODevice::WriteOnly))
{
QTextStream stream(&file1);
stream << str.toUpper(); //Запишем строку в верхнем регистре
file1.close();
if (stream.status() != QTextStream::Ok)
{
qDebug() << "Ошибка записи файла";
}
}
return app.exec( );
}
Рисунок 13. Вывод текстовой информации из файла " here_is_the_text.txt " в консоль.
Рисунок 14. Содержимое файла "new.txt" после выполнения программы.
Вывод:
В ходе выполнения лабораторной работы я изучил и на практике освоил работу с простейшими элементами управления в среде разработки Qt: создавал различные виджеты (кнопки, надписи), также создавал объекты классов QDate и QTime для работы с датой и временем, использовал события таймера и работал с объектами класса QFile для копирования содержимого одного бинарного файла в другой. Помимо прочего я, используя объекты класса QBuffer, осуществил вывод текстовой строки в консоль, и, используя объекты класса QTextStream, построчно считал содержимое текстового файла для вывода его в консоль.