`
345161974
  • 浏览: 60680 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Qt动态进度条[根据值大小改变进度]

 
阅读更多

首先看下效果图:


部分核心代码如下:

类声明:

class psshowslider : public QFrame
{
    Q_OBJECT

public:
    explicit psshowslider(QWidget *parent = 0);
    ~psshowslider();
    //设置最大值
    void setMaxValue(double maxvalue);
    //得到最大值
    double getMaxValue();

    //设置最小值
    void setMinValue(double minvalue);
    //得到最小值
    double getMinValue();

    //设置值
    void setValue(double value);
    //取得值
    double getValue();

protected:
    void paintEvent(QPaintEvent *);

private:
    Ui::psshowslider *ui;
    //滑动条最大值
    double maxvalue;
    //滑动条最小值
    double minvalue;
    //设置显示的值
    double value;

};

类方法里面主要是paintEvent方法的实现.

void psshowslider::paintEvent(QPaintEvent *) {
    QPainter painter(this);
    //移动坐标系
    painter.translate(20, height() / 2);
    QPen pen(Qt::white, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
    painter.setPen(pen);
    painter.drawLine(0, 40, 0, -40);

    //画上边直线
    painter.drawLine(0, -30, 320, -30);
    //画下边直线
    painter.drawLine(0, 30, 320, 30);
    //画上下直线刻度以及文字
    int num = 1;
    int x, y;
    QPen pen2(Qt::white, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
    QPoint point;
    painter.setPen(pen2);
    for (; num < 21; num++) {
        x = 15 * num;
        if (num % 2 == 0) {
            y = -20;
            point.setX(x - 8);
            point.setY(y + 10);
            painter.drawText(point, QString::number(50 * num));
        } else {
            y = -25;
        }
        painter.drawLine(x, -30, x, y);
    }

    //设置线性渐变
    QLinearGradient linearGradient = QLinearGradient(0, 0, 300, 0);
    linearGradient.setColorAt(0.0, Qt::cyan);
    linearGradient.setColorAt(0.6, Qt::yellow);
    linearGradient.setColorAt(1, Qt::red);
    //设置画刷
    QBrush qsh(linearGradient);
    painter.setBrush(qsh);

    painter.setPen(Qt::cyan);
    //画矩形
    painter.drawRect(0, -5, this->getValue() / this->getMaxValue() * 300, 34);

}

每次文本框的值变化之后,调用psshowslider的update或者repaint方法即可.

分享到:
评论

相关推荐

    Qt动态进度条

    总的来说,Qt的QProgressBar提供了丰富的功能来创建动态进度条,不仅可以实时反馈任务进度,还可以通过自定义样式和动画增强用户体验。通过熟练掌握这些技术,你可以为你的应用程序创造出更加友好的用户界面。在实际...

    Qt进度条的使用

    本教程将深入探讨Qt进度条的使用,包括其基本用法、样式定制以及与其他组件的交互。 1. 基本使用 在Qt中,我们可以使用QProgressBar类来创建一个进度条。首先,需要在UI设计中添加QProgressBar,或者在代码中动态...

    渐变进度条 美化进度条

    JavaScript可以用来动态地改变进度条的样式,例如根据任务的完成程度调整渐变背景的宽度。在JavaScript中,我们可以获取到任务的完成百分比,然后将其应用到CSS的`style`对象上: ```javascript let progressBar = ...

    Qt 进度条控件

    在Qt框架中,进度条控件是用户界面中不可或缺的一部分,它用于显示任务的执行进度,为用户提供一种视觉反馈,让他们了解程序运行的状态。本文将深入探讨Qt中的进度条控件,尤其是第三方的QProgressIndicator组件,...

    Qt绘制电池进度条(paintEvent)

    在这个电池进度条中,我们可以创建一个动画对象,让它改变电量值,每次改变后都会触发`paintEvent`,从而更新显示。动画的持续时间和帧率可以通过QPropertyAnimation的属性进行设置。 5. **颜色判断**: 添加条件...

    基于QT的圆形进度条控件

    在这个类型中,我们可以设置属性,如颜色、大小、进度值和百分比显示。下面是一个基本的框架: ```qml Item { id: circularProgressBar property alias value: progressBar.value property alias color: ring....

    Qt自定义控件导航进度条控件,提示当前第几步,总共有几步

    导航进度条控件,使用示例如淘宝订单页面的进度控件,提示当前第几步,总共有几步,然后当前进度特殊颜色显示,每个进度带有时间文字等信息。本示例演示了淘宝订单流程样式。控件自适应任何分辨率,可以自由调整自身...

    Qt项目 多彩进度条.zip

    可以创建一个颜色数组,存储每个颜色段的颜色值,然后根据进度值在这些颜色之间进行插值,以实现平滑过渡。 4. **动画效果**: 考虑到用户体验,我们可以添加一些动画效果,如颜色的平滑过渡或进度条的动态填充。...

    基于QT的圆形波浪进度条

    这可以通过在QML文件中添加更多的属性和组件来实现,如`Text`元素用于显示进度值,`PropertyAnimation`用于动态改变颜色等。 在QT的环境中,这个QML组件可以方便地集成到任何QT应用程序中,只需要在主QML文件中导入...

    QT可以随着数值实时改变大小的长方形条形控件测试代码

    本示例关注的是一个能够根据数值实时改变大小的长方形条形控件,这在数据可视化、进度条或仪表盘等场景中非常常见。 这个"QT可以随着数值实时改变大小的长方形条形控件"可能基于QGraphicsView和QGraphicsRectItem...

    增强 进度条 类

    自绘过程通常包括在窗口上绘制矩形、线条、文本等元素,并根据进度值调整它们的大小或颜色。 "各种颜色"和"各种步长"是增强进度条类的两个关键特性。颜色定制允许开发人员根据应用的配色方案或者用户的个性化需求来...

    水纹进度条

    接着,利用RectF对象和canvas.drawArc()方法来绘制进度条部分,根据进度值来决定弧度的大小。 为了实现"水纹"效果,我们需要使用Animation或者ObjectAnimator来创建动画。在Android中,我们可以定义一个...

    进度条颜色设定及文字绘制

    `Minimum`和`Maximum`属性分别定义了进度条的起始值和结束值,通常设置为0和100,代表0%到100%的进度。`Value`属性则用来设置当前进度,它应该在`Minimum`和`Maximum`之间。`Step`属性则定义了每次自动增加或减少的...

    简单环形条格进度条

    6. **布局与集成**:最后,将自定义的环形进度条控件集成到Qt界面中,可以使用QLayout来管理其位置和大小。确保它与其他控件和谐共存,提供良好的用户体验。 在提供的CirclePBar01文件中,可能包含了实现这个功能的...

    qtableview 自定义委托 checkbox,进度条、时间等控件

    在自定义委托中,我们需要根据模型数据动态地设置进度条的值。在`paint()`方法中,我们需要绘制进度条并确保其大小适应单元格。此外,可能还需要监听模型数据的改变,以便及时更新进度条的状态。 3. **时间(Time)...

    3 PyQt 实现漂亮进度条 ProgressBar.zip

    4. **设置进度值** 使用`setValue()`方法可以改变进度条的值,从而更新进度。例如,若要从0到100填充进度条,可以这样写: ```python progress_bar.setMinimum(0) progress_bar.setMaximum(100) for i in ...

    使用 qt 实现的视频播放器

    在Qt Creator中创建一个新的Qt Widgets Application项目,引入多媒体模块(`QT += multimedia multimediawidgets`),然后根据上述步骤编写C++代码。注意,为了跨平台兼容性,可能需要配置额外的编译选项和库链接。 ...

    环形进度条,可用于显示剩余量

    这些API可能是用来改变进度条的颜色、宽度、填充样式,或者是调整文本的字体大小、颜色、对齐方式等。通过这些API,开发者可以轻松地根据应用的界面风格进行个性化设计。 在Qt中,创建自定义控件通常涉及以下几个...

    基于QT的电池电量显示控件

    动态充电过程的实现则可能通过定时器(QTimer)来更新电池的电量值,每次定时器触发时,控件会根据电量的变化更新显示。 为了实现圆角矩形,开发者可能会使用QPainterPath结合QPainter的strokePath和fillPath方法。...

    渐变颜色 进度条 多线程

    在对话框中添加渐变颜色的进度条和多线程功能时,我们需要考虑布局管理,确保元素在窗口大小改变时仍能正确显示和排列。 总的来说,渐变颜色的进度条和多线程进度条是现代应用程序中提升用户体验的重要技术。它们...

Global site tag (gtag.js) - Google Analytics