Замена функции сна в Qt / C ++

Поэтому я пишу программу, которая отображает каждую букву слова в течение 1 секунды с интервалом в 1 секунду между буквами. (Это для упражнения по орфографии для 1 класса). В настоящее время я использую функцию сна, чтобы «приостановить» программу на 1 секунду, прежде чем она снова «обновится». После этого он отображает слово на секунду, а затем удаляет его. Я перерисовываю перед функцией сна, иначе она не обновляется вовремя.

Вот основная функция:

QString word = "apple";
QThread thread;

for(int i = 0; i < word.size(); i++)
{
    ui->label1->setText(word[i]);
    ui->label1->repaint();
    thread.sleep(1);
    ui->label1->setText("");
    thread.sleep(1);
}

ui->label1->setText(word);
ui->label1->repaint();
thread.sleep(1);
ui->label1->setText("");

Это работает нормально, за исключением того, что программа перестает отвечать на запросы (хотя я вижу, что все еще отображается правильный вывод), пока не завершится выполнение всей функции, затем она снова будет работать нормально. Есть ли другой способ, которым я могу достичь этой цели, не используя сон? Я довольно новичок в Qt.

Обновление я сделал, Я создал новый класс, который будет обрабатывать таймер, но, похоже, он фактически не соединяет сигнал и слот. Вот файл .h:

#ifndef TIMERDISPLAY_H
#define TIMERDISPLAY_H

#include <QTimer>
#include <QObject>

class TimerDisplay:public QObject
{
    Q_OBJECT

public:
    TimerDisplay();

public slots:
    void expired();

private:
    QTimer timer;
};

#endif // TIMERDISPLAY_H

и файл .cpp:

#include "timerdisplay.h"
#include <QDebug>

TimerDisplay::TimerDisplay()
{
    connect(&timer, SIGNAL(timeout()), this, SLOT(expired()));
    timer.setSingleShot(false);
    timer.setInterval(1000);
    timer.start();
}

void TimerDisplay::expired()
{
    qDebug()<<"timer expired";
}

Ответы на вопрос(3)

Ваш ответ на вопрос