Демонстрация работы Youtube
FileProcessorThread
- класс, наследующий QThread, для чтения и обработки файла в фоновом потоке;FileProcessor
- класс, управляющий и предоставляющий интерфейс для взаимодействия с QML;Main.qml
- основной файл QML, описывающий пользовательский интерфейс;WordHistogram.qml
- файл QML, описывающий элемент интерфейса "Гистограмма".
- Получение от диалогового окна пути до текстового файла
- Отправка пути до файла до
FileProcessorThread
для последующей обработки - По нажатию на кнопку "Старт", вызывается метод
startProcessing()
с последующим запуском потока чтения и обработки файла. - Файл считывается построчно. Сплитится строка по регулярному выражения
\W+
. Инкрементируются счетчики для слов, хранящихся вQMap
. Поддерживается вектор, состоящий из топ-15 слов. - Вектор из топ-15 слов отправляется на отрисовку.
Для реализации возможности приостановки и остановки потока, наследовался от QThread
, перегрузил виртуальный метод run()
и воспользовался QWaitCondition
.
P.S. Обычно так не делаю. Использую QObject::moveToThread()
.