Алгоритм создания простого текстового редактора на основе библиотеки Qt.

В данной статье будет разобран принцип создания простого текстового редактора, написанного на языке C++ на основе библиотеки Qt. Программа входит в состав примеров поставляемых с пакетом Qt Creator. На её примере показаны: приёмы создания интерфейса приложения на основе QMainWindow, загрузка и сохранение текстовых файлов с помощью QFile и QTextStream.

Приложение выводит на экран окно простого текстового редактора, интерфейс которого позволяет загружать и сохранять текстовые файлы. Текст программы для удобства содержится в одном листинге. В функции main() на основе пользовательского класса Notepad создаётся объект редактора и происходит запуск приложения.


(источник картинки)

Класс Notepad создается на базе класса QMainWindow, предоставляющего механизм быстрого создании приложений с гибким интерфейсом. Использование в подавляющем большинстве приложений одних и тех же элементов пользовательского интерфейса, позволило выделить набор стандартных средств, ускоряющих разработку интерфейса, которые реализованы в классе QMainWindow.

В конструкторе класса реализован стандартный алгоритм создания интерфейса с помощью инструментов класса QMainWindow (рисунок 1). Объекты класса QAction предназначены для привязки элементов пользовательского интерфейса к одному объекту действия и дальнейшего соединения сигнала, оповещающего о желании пользователя выполнить определенное действие, с соответствующим слотом приложения.

К примеру, в приложении с гибким интерфейсом одну и ту же команду можно вызвать с помощью опции во всплывающем меню, с помощью пиктограммы на панели инструментов или с помощью комбинации горячих клавиш. В коде программы все эти действия соединяются с одним объектом QAction.



(рисунок№1)

В конструкторе создаются объекты для трёх действий: Load, Save и Exit. С помощью метода connect() сигналы, оповещающие о выборе пользователем одного из этих действий, подключаются к слотам приложения. Функция QMainWindow::menuBar() создает панель меню и возвращает указатель на неё. Метод QMenuBar::addMenu добавляет новое меню на панель меню. Функция QMenu::addAction() добавляет новое действие в список всплывающего меню. В конце тела конструктора создаётся виджет текстового редактора и устанавливается в качестве центрального элемента приложения.

Слоты open() и save() идентичны по структуре, за исключением того, что в одном из них происходит загрузка текста из файла в окно редактора, а в другом наоборот – копирование данных из редактора в файл (рисунок 2).



(рисунок №2)

Метод QFileDialog::getOpenFiieName предназначен для определения пути к требуемому файлу. Он вызывает диалоговое окно выбора файла (рисунок 3).


(рисунок №3)

Первым аргументом в этот метод передаётся указатель на объект-предок, вторым передается текст заголовка окна, третьим — строка, представляющая собой рабочую директорию. Четвертый аргумент используется для создания фильтра, задающего расширение.

Строковая переменная, хранящая путь к нужному файлу, передается в конструктор класса QFile. Объект этого класса отражает в программе целевой файл, а сам класс состоит из группы методов, представляющих собой набор действий, которые можно произвести с файлом.
Операция открытия файла QFile::open(), в случае успешного открытия, возвращает значение true. Если эта процедура возвратит противоположное значение, то программа, с помощью метода QMessageBox::critical(), создаст окно с сообщением об ошибке.
Для чтения и записи текста в библиотеке Qt предлагается использовать класс потока QTextStream.
Для связи потока с целевым файлом в конструктор потока передаётся указатель на объект файла.
Метод QTextStream::readAll() считывает всё содержимое файла.

Данный материал о кроссплатформенном фреймворке Qt подготовлен автором @maximus00.

vox-populiсофтразработкапрограммированиеqt
187
220.186 GOLOS
0
В избранное
Web Development
Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает тех программистов, которые презирают тех, кто их презирает.
187
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (5)
Сортировать по:
Сначала старые