for循环中的QT cpp延迟

QT cpp delay in for loop

我有一个循环来填充我的 textBrowser 小部件。现在我想在循环中延迟 1 秒。我希望他追加一行并等待 1 秒,然后再填充另一行。 我在我的循环中尝试过睡眠,但它不起作用。他毫不拖延地填满了我的文本浏览器。

*#include <QThread>*
..
sleep(1);

我的代码看起来像这样:

 for(int i = 0; i < array.count(); i++)

   {     
     QString br = "ID-->"+array[i];
     ui->textBrowser->append(br);
   }

如何延迟循环?

最好使用事件形成 QTimer 而不是使用循环。例如,您可以使用如下所示的插槽。

int i = 0;

void MainWindow::OnTimer()
{
    QString br = "ID-->" + array[i++];
    ui->textBrowser->append(br);
    if (i < array.count())
    {
        QTimer::singleShot(1000, this, SLOT(OnTimer()));
    }
}

您必须将 arrayi 作为 class 变量。

但是如果您只是想以某种方式完成此操作,则可以在循环中使用以下代码而不是 sleep。这将阻止 for 循环但继续处理事件,因此 UI 将在迭代时得到更新。但这有点骇人听闻。

QEventLoop loop;
QTimer::singleShot(1000, &loop, SLOT(quit()));
loop.exec();