Qt 的 Lambda 捕获局部变量导致 UI 更新异常的分析与解决

1. 问题描述

在 Qt 开发中,我们通常会使用 QTimer 进行周期性 UI 更新。例如,下面的代码用于在检测游戏窗口时,在 UI 界面上显示动态变化的"正在检测游戏窗口..."的文本,每 300 毫秒更新一次。

cpp 复制代码
void MainWindow::detectAndPopulateGameList()
{
    ui->game_record_stackedWidget->setCurrentIndex(2);
    ui->dectecting_game_label->setText(QStringLiteral("正在检测游戏窗口."));

    QTimer *timer = new QTimer(this);
    timer->setInterval(300);
    
    int dotCount = 1;
    connect(timer, &QTimer::timeout, this, [this, timer, &dotCount]() {
        dotCount++;
        if (dotCount > 6) {
            dotCount = 1;
        }
        QString baseText = QStringLiteral("正在检测游戏窗口");
        QString dots(dotCount, QChar('.'));
     
相关推荐
努力学习的小廉2 小时前
【智能指针】—— 我与C++的不解之缘(三十三)
开发语言·c++
baobao17676408302 小时前
C++单例模式
javascript·c++·单例模式
shenxiaolong_code2 小时前
编译器bug ?
c++·bug·meta programming·compiler bug
dami_king2 小时前
用C++手搓一个贪吃蛇?
c++·游戏·c
安於宿命3 小时前
【Linux】用C++实现UDP通信:详解socket编程流程
linux·c++·udp
愚润求学4 小时前
【C++】list模拟实现
开发语言·数据结构·c++·list
刚入门的大一新生8 小时前
C++初阶-C++的讲解1
开发语言·c++
Quz9 小时前
QML输入控件: TextArea的应用(带行号的编辑器)
qt·ui
m0_5557629010 小时前
架构下的按钮效果设置
qt·架构
黑不溜秋的11 小时前
Ubuntu24.04 编译 Qt 源码
开发语言·qt