当前位置: 首页 > news >正文

QT异步编程

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include "mythread.h"
#include "ui_widget.h"
#include <QSlider>                     // QSlider 类的头文件
#include <QString>                     // 用于定义样式表的 QString
#include <QGraphicsDropShadowEffect>// 阴影效果的头文件
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void rcvsing(int value);
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
    myThread *thread;
};

#endif // WIDGET_H

 

 myThread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QThread>

class myThread : public QThread
{
    Q_OBJECT
public:
    explicit myThread(QObject* parent = nullptr);
    void run() override;

signals:
    void openSingal(int value);
};

#endif // MYTHREAD_H

 widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
#include <QGraphicsDropShadowEffect>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    thread = new myThread(this);
    ui->horizontalSlider->setRange(0, 100);
    ui->horizontalSlider->setValue(0);

    connect(thread, &myThread::openSingal, this, &Widget::rcvsing);

    QString styleSheet = R"(
        QSlider::groove:horizontal {
            background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
                                        stop:0 #1e90ff, stop:1 #00bfff);
            height: 8px;
            border-radius: 4px;
        }

        QSlider::handle:horizontal {
            background: #ffffff;
            width: 20px;
            height: 20px;
            margin: -6px 0;
            border-radius: 10px;
            border: 2px solid #1e90ff;
        }

        QSlider::sub-page:horizontal {
            background: #FF0000;  /* 已加载部分改为红色 */
            height: 8px;
            border-radius: 4px;
        }

        QSlider::add-page:horizontal {
            background: #d3d3d3;
            height: 8px;
            border-radius: 4px;
        }
    )";

    ui->horizontalSlider->setStyleSheet(styleSheet);

    // 添加阴影效果
    QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect(this);
    shadowEffect->setBlurRadius(10);
    shadowEffect->setColor(QColor(0, 0, 0, 100));
    shadowEffect->setOffset(2, 2);
    ui->horizontalSlider->setGraphicsEffect(shadowEffect);
}

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

void Widget::rcvsing(int value)
{
    ui->horizontalSlider->setValue(value);
    ui->label->setText(QString::number(value) + "%");
}


void Widget::on_pushButton_clicked()
{
    thread->start();
}

myThread.cpp

#include "mythread.h"
#include <QThread>

myThread::myThread(QObject* parent)
    : QThread(parent)
{
}

void myThread::run()
{
    int value = 0;
    while (value <= 100) {
        emit openSingal(value);
        value++;
        QThread::msleep(100); // 每隔100毫秒更新一次
    }
}

 效果

相关文章:

  • 无显示器安装访问树莓派3B+
  • C语言基础系列【19】inline关键字
  • 鸿蒙开发:RelativeContainer 相对布局详解【全套华为认证学习资料分享(考试大纲、培训教材、实验手册等等)】
  • 能源行业标杆:信创系统在智能电网中的3个创新应用案例
  • com.android.tools.r8.CompilationFailedException: Compilation failed to complete
  • lamp平台的应用
  • Towards Precise and Explainable Hardware Trojan Localization at LUT Level
  • L33.【LeetCode笔记】循环队列(数组解法)
  • ASP.NET Core 6 MVC 文件上传
  • 蓝桥杯P1259-奇怪的馈赠 (贪心题解)
  • File文件和目录
  • Milvus JSON数据存储优化方案
  • 宝塔 Linux 计划任务中添加运行项目网站PHP任务-定时任务
  • Kubernetes教程(三)Docker容器命令
  • 【读书笔记·VLSI电路设计方法解密】问题59:数字电路中的可控性和可观测性是什么
  • 【deepseek】辅助思考生物学问题:ICImapping构建遗传图谱gap较大
  • 基于RapidOCR与DeepSeek的智能表格转换技术实践
  • 大模型LoRA微调训练原理是什么?
  • 【Pandas】pandas Series sort_index
  • 使用Python的requests库调用API并处理JSON响应的详细步骤
  • 上海普陀:原则同意将工业河更名为同济湾河
  • 又有明星分析师晋升管理层:“白金分析师”武超则已任中信建投证券党委委员
  • 离休干部周惠梅逝世,曾从事多年地下革命工作
  • 受贿2.61亿余元,陕西省政协原主席韩勇一审被判死缓
  • 周国辉谈花开岭现象 :年轻的公益人正在用行动点亮希望
  • 假冒政府机构账号卖假货?“假官号”为何屡禁不绝?媒体调查