Добавил:
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: программа, которая рисует окружности с помощью мыши (окружность видима в процессе построения). Нарисованные окружности можно сохранить в файле и загрузить из файла.
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
Пример 2: программа, которая считывает текст из файла и половину строк переписывает в другой файл; используются специальные окна для работы с файлами.
Создайте проект на основе класса QMainWindow, добавьте меню с командами «Открыть файл», «Сохранить файл» и «Выход». Свяжите сигнал triggered() кнопки «Выход» со слотом close() главного окна (см. пример 1).
Объявите в классе MainWindow файл и счетчик строк:
QFile file;
int counter;
В начало файла mainwindow.h вставьте подключение заголовочного файла:
#include <QFile>
Перейдите в файл mainwindow.cpp и подключите заголовочные файлы:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QTextCodec>
#include <QTextStream>
В конструкторе задайте кодировку, обеспечивающую использование кириллицы:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTextCodec* codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
}
MainWindow::~MainWindow()
{
delete ui;
}Создайте слот для команды actionOpen:
void MainWindow::on_actionOpen_triggered()
{
QString fileName = QfileDialog::getOpenFileName(
this, // указатель на родительское окно
"Открыть файл", // заголовок окна
QString(), // выбор начинается с текущего каталога
QString("Текстовые файлы (*.txt);;Все файлы (*.*)") );
// фильтры для списка файлов
if (!fileName.isEmpty()) // если имя файла выбрано
{
file.setFileName(fileName);
// связываем объект file с физическим файлом
file.open(QIODevice::ReadOnly|QIODevice::Text);
// открываем файл для чтения
QString text = "Файл " + fileName + ": \n";
// выводим название файла
QString line; // строка для чтения файла
counter = 0;
while (!file.atEnd()) // пока файл не закончен
{
line = file.readLine(); // считываем строку из файла
counter++; // увеличиваем счетчик строк
text += line; // добавляем строку к тексту
}
QString tmp; // вспомогательная строка для отображения результата
tmp = Qstring(
"\nКоличество строк в файле %1 \n").arg(counter);
text += tmp; // добавляем результат к выводимому тексту
ui->textEdit->setText(text); // отображаем текст на экране
}
}Создайте слот для команды actionSave:
void MainWindow::on_actionSave_triggered()
{
QString fileName = QFileDialog::getSaveFileName(this, "Сохранить файл", Qstring(),
QString("Текстовые файлы (*.txt);;Все файлы (*.*)") );
// используем окно для задания имени сохраняемого файла
QFile rezFile; // Результирующий файл
if (!fileName.isEmpty()) // Если имя файла задано
{
QString line; // строка из файла
if (file.isOpen()) // если исходный файл открыт
{
file.seek(0); // переходим в начало файла
rezFile.setFileName(fileName);
// присваиваем физическое имя результирующему файлу
rezFile.open(QIODevice::WriteOnly|QIODevice::Text);
// открываем сохраняемый файл
QTextStream out(&rezFile);
/* создаем поток, связанный с файлом (запись файла обычно выполняется с помощью потока) */
for (int i = 1; i <= counter/2; ++i)
// отсчитываем половину строк
{
line = file.readLine();
// считываем строку из исходного файла
out << line; // записываем в результирующий файл
}
rezFile.close(); // закрываем создаваемый файл
rezFile.open(QIODevice::ReadOnly|QIODevice::Text);
// открываем сохраненнный файл для чтения
QString text = rezFile.readAll();
// считываем результирующий файл
ui->textEdit->setText(text);
// выводим полученный файл на экран
}
}
else ui->textEdit->setText("Файл не сохранен");
}
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
