Этот урок демонстрирует как использовать Qt Creator для написания маленькой программы Qt, Text Finder. Это упрощённая версия примера QtUiToolsText Finder.
Создание проекта Text Finder
Замечание: Создайте проект с активным режимом Справка чтобы вы могли следовать этим инструкциям во время работы.
Выберите Файл > Новый файл или проект... > Проект Qt C++ > GUI приложение Qt > Выбрать....
Откроется диалог Введение и размещение проекта.
В поле Имя введите TextFinder.
В поле Создать в введите путь к файлам проекта. Например, C:\Qt\examples, и нажмите Вперёд.
Откроется диалог настроек цели.
Выберите нужный профиль Qt для сборки вашего проекта и нажмите Далее.
Замечание: Если у вас установлен только один профиль Qt, этот диалог будет пропущен.
Откроется диалог Информация о классе.
В поле Имя класса введите TextFinder в качестве имени класса.
В списке Базовый класс выберите QWidget в качестве типа базового класса.
Замечание: Поля Заголовочный файл, Файл исходников и Файл формы будут обновлены автоматически в соответствии с выбранным вами именем класса.
Нажмите Вперёд.
Откроется диалог Управление проектом.
Проверьте настройки проекта и нажмите Завершить для создания проекта.
Проект TextFinder будет содержать следующие файлы:
textfinder.h
textfinder.cpp
main.cpp
textfinder.ui
textfinder.pro
Файлы .h и .cpp содержат необходимые строки кода. Файл .pro полностью завершён.
Заполнение недостающих кусков
Начнём с проектирования интерфейса пользователя и затем перейдём к заполнению недостающего кода. В заключение добавим поиск.
Проектирование пользовательского интерфейса
В режиме Редактор дважды нажмите на файле textfinder.ui в виде Проекты для запуска интегрированного Qt Designer.
Выберите область экрана и нажмите Скомпоновать по вертикали (или нажмите Ctr+L) для применения вертикальной компоновки (QVBoxLayout).
Применение вертикальной и горизонтальной компоновок обеспечивает масштабирование интерфейса приложения при различных разрешениях экрана.
Для вызова функции поиска при нажатии пользователем кнопки Find вы будете использовать механизм сигналов и слотов Qt. Сигнал вырабатывается когда происходит определённое событие, а слот - это функция которая вызывается в ответ на определённый сигнал. У виджетов Qt есть предопределённые сигналы и слоты которые вы можете использовать прямо из Qt Designer. Чтобы добавить слот для функции поиска:
Нажмите правой кнопкой мыши на кнопке Find для открытия контекстного меню.
Выберите Перейти к слоту... > clicked(), и нажмите OK.
Закрытый слот on_findButton_clicked() будет добавлен в заголовочный файл textfinder.h и закрытая функция TextFinder::on_findButton_clicked() будет добавлена в файл исходных кодов textfinder.cpp.
Нажмите Ctrl+S для сохранения изменений.
Для получения дополнительной информации о проектировании форм с Qt Designer смотрите Руководство по Qt Designer.
Завершение заголовочного файла
Файл textfinder.h уже содержит необходимые директивы #include, конструктор, деструктор и объект Ui. Вам потребуется добавить закрытую функцию loadTextFile() для чтения и отображения содержимого входного файла в QTextEdit.
В боковой панели Проекты в режиме Редактор нажмите два раза на файле textfinder.h чтобы открыть его для редактирования.
Добавьте закрытую функцию в секцию private за Ui::TextFinder, как продемонстрировано в следующем фрагменте кода:
Теперь заголовочный файл завершён, перейдём к файлу исходных кодов textfinder.cpp.
В боковой панели Проекты в режиме Редактор нажмите два раза на файле textfinder.cpp чтобы открыть его для редактирования.
Добавьте код для загрузки текстового файла с помощью QFile, чтения его с помощью QTextStream, а затем отображения его в textEdit с помощью setPlainText(). Это продемонстрировано в следующем фрагменте кода:
В слоте on_findButton_clicked() добавьте код извлечения строки поиска и использования функции find() для поиска строки в текстовом файле. Это продемонстрировано в следующем фрагменте кода:
Слот on_findButton_clicked() будет вызван автоматически в сгенерированном uic ui_textfinder.h этой строчкой кода:
QMetaObject::connectSlotsByName(TextFinder);
Создание файла ресурсов
Вам потребуется файл ресурсов (.qrc) в котором вы сохраните входной текстовый файл. Входным файлом может быть любой файл .txt с абзацем текста. Создайте текстовый файл с именем input.txt и сохраните его в каталоге textfinder.
Чтобы добавить файл ресурсов:
Выберите Файл > Новый файл или проект > Qt > Файл ресурсов Qt > Выбрать....
Откроется диалог Выбор размещения.
В поле Имя введите textfinder.
В поле Путь введите C:\Qt\examples\TextFinder и нажмите Далее.
Откроется диалог Управление проектом.
В поле Добавить в проект выберите TextFinder.pro и нажмите Завершить для открытия файла в редакторе кода.
Выберите Добавить > Добавить префикс.
В поле Префикс замените префикс по умолчанию на (/).
Выберите Добавить > Добавить файлы для поиска и добавления input.txt.
Сборка и запуск вашего приложения
Теперь, когда у вас есть все необходимые файлы, нажмите на кнопку чтобы скомпилировать и запустить вашу программу.