QT 实时数据更新UI

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "workthread.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

public slots:
    void showValue(int value);// 显示槽函数

private slots:
    void on_StartBtn_clicked();// 开始按钮槽函数
    void on_StopBtn_clicked(); // 结束按钮槽函数

private:
    Ui::MainWindow *ui;

private:
    WorkThread * workThread;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->value->setText("0");// label显示文本
}

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

void MainWindow::showValue(int value)
{
    //ui->value->setText("ttt");// label显示文本
    ui->value->setText(QString::number(value)); //更新label内容
}

void MainWindow::on_StartBtn_clicked()
{
    workThread = new WorkThread();
    workThread->start();
    connect(workThread, SIGNAL(currentValue_signal(int)), this, SLOT(showValue(int)));
    ui->StartBtn->setEnabled(false);
    ui->StopBtn->setEnabled(true);
}

void MainWindow::on_StopBtn_clicked()
{
    workThread->terminate();
    workThread->wait();

    ui->StartBtn->setEnabled(true);
    ui->StopBtn->setEnabled(false);
}

workthread.h

#ifndef WORKTHREAD_H
#define WORKTHREAD_H

#include <QThread>

class WorkThread:public QThread
{
    Q_OBJECT

public:
    WorkThread();
    ~WorkThread();
    // 重写run()方法
    void run();
signals:
    void currentValue_signal(int value);// 定义信号发到主线程
};

#endif // WORKTHREAD_H

workthread.cpp

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

WorkThread::WorkThread()
{
}

WorkThread::~WorkThread()
{
}

void WorkThread::run()
{
    while (1)
    {
        for (int n = 0; n < 10; n++)
        {
            emit currentValue_signal(n);
            msleep(1000);
        }

        msleep(1000);
    }
}

mainwindow.ui
在这里插入图片描述

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天使也有爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值