7.双路进度条实现

//main.cpp文件
#include "myprogress.h"
#include <QApplication>

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

    return a.exec();
}

//myprogress.h文件
#ifndef MYPROGRESS_H
#define MYPROGRESS_H

#include <QtWidgets>

class MyProgress : public QWidget
{
    Q_OBJECT

public:
    MyProgress(QWidget *parent = 0);
    ~MyProgress();

private:
    QProgressBar *leftBar;
    QProgressBar *rightBar;

    int val;
};

#endif // MYPROGRESS_H

//myprogress.cpp文件
#include "myprogress.h"

#define  PROGRESS_LEFT_STYLE (QString(""\
    "QProgressBar {"\
    "background-color: #dbdee0;"\
    "border-right:1px solid #00ff00"\
    ""\
    "}"\
    "QProgressBar::chunk {"\
    "background-color:  #FF5500" "}"))

#define  PROGRESS_RIGHT_STYLE (QString(""\
    "QProgressBar {"\
    "background-color: #dbdee0;"\
    "border-left:1px solid #00ff00"\
    ""\
    "}"\
    "QProgressBar::chunk {"\
    "background-color:  #FF5500" "}"))


MyProgress::MyProgress(QWidget *parent)
    : QWidget(parent)
{
    //初始化组件
    val = 50;
    leftBar = new QProgressBar;
    rightBar = new QProgressBar;
    leftBar->setValue(val);
    leftBar->setInvertedAppearance(true); //设置为从右到左增加
    rightBar->setValue(val);
    //设置进度值不显示
    leftBar->setTextVisible(false);
    rightBar->setTextVisible(false);

    //设置纵向可拉伸
    leftBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    rightBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

    //设置进度条的样式
    leftBar->setStyleSheet(PROGRESS_LEFT_STYLE);
    rightBar->setStyleSheet(PROGRESS_RIGHT_STYLE);

    //两个进度条做布局
    QHBoxLayout *hlay = new QHBoxLayout;
    hlay->addWidget(leftBar);
    hlay->addWidget(rightBar);
    hlay->setMargin(0);
    hlay->setSpacing(0);

    //定义纵向布局
    QVBoxLayout *vlay = new QVBoxLayout;
    vlay->addStretch(1);  //增加一份空白
    vlay->addLayout(hlay, 5); //把水平布局作为整体,并占5份比例
    vlay->addStretch(1);  //增加一份空白
    vlay->setMargin(0);
    vlay->setSpacing(0);

    //总体布局,将之用于整个窗体
    QHBoxLayout *totalLay = new QHBoxLayout(this);
    totalLay->addStretch(1);
    totalLay->addLayout(vlay, 28);
    totalLay->addStretch(1);
    totalLay->setMargin(0);
    totalLay->setSpacing(0);

    //设置窗体属性
    this->resize(300, 50);
    this->setStyleSheet("background-color:white");
}

MyProgress::~MyProgress()
{

}

#-------------------------------------------------
#
# Project created by QtCreator 2018-05-13T21:06:16
#progress文件
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = porgress
TEMPLATE = app


SOURCES += main.cpp\
        myprogress.cpp

HEADERS  += myprogress.h

发布了10 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40083589/article/details/94025830