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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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毫秒更新一次}
}
效果