qt中 如何实现使tablewidget中的数值实现自增

问题遇到的现象和发生背景

img

img

问题相关代码,请勿粘贴截图
if(ui->checkBox->isChecked())
{
        int num = value.toInt();
        for(int tmp= 0;tmp<20;tmp++ ){

            num = num + 1;
            QString s10 = QString::number(num);
            emit showchange(s10);a
            Sleep(1000);

        }
}
我的解答思路和尝试过的方法

我尝试将tablewidget中的数据类型从string转换成int,加了以后再转回string输出,我这里让他加20次,结果输出后它的值会在加完20次后输出,而不是加一次就在tablewidget上显示一次。

img


但是下面的应用程序输出会显示哪些自加的数。只是不会在tablewidget上逐个显示。

我想要达到的结果

我想要数值加一次就在tablewidget上显示一次,而不是加完后显示最终的结果。达到一秒自增1的效果

有说用QTimer 但是具体操作还是一头雾水啊。

点击ok以后,界面发送自定义信号,自定义信号参数为当前值是否递增,主窗口接收信号,槽函数实现,如果是递增启动timer,timer的槽函数中获取当前的tablewidgetItem,这里为了方便获取,你在你的自定义信号中可以加个tablewidgetItem的参数,把它传过来,然后更新tablewidgetItem的text,也就是说你的自定义信号有三个参数传过来(当前值是否递增当前item),否则就停止timer

下面这有timer最简单的使用。这儿的开始和暂停就是你的是否勾选自增。
https://blog.csdn.net/wzz953200463/article/details/113925660

更新表格操作不合适

timerevent starttimer killtimer

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    int timerId;

protected:
    void timerEvent(QTimerEvent *event);
};

#endif // MAINWINDOW_H

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    timerId = startTimer(1000);
}

MainWindow::~MainWindow()
{
    killTimer(timerId);
    delete ui;
}

void MainWindow::timerEvent(QTimerEvent *event)
{
    qDebug() << "Update...";
    //在这个把那个item设置自增的值
}