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

qt显示类控件---QProgressBar

目录

核心属性

教学案例

案例1:核心属性的使用

案例2:设置进度条自动增长,并使用QPalette进行样式调整(比较难)

案例3:使用sheetstyle进行进度条的渐变等的样式调整(中等)


QProgressBar是一个进度条组件

核心属性

教学案例

案例1:核心属性的使用

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//QProgressBar是一个进度条组件//核心属性, 设置这些元素全部都是set+方法名ui->progressBar->setMinimum(10);  //设置2进度条最小值ui->progressBar->setMaximum(100);  //设置进度条最大值ui->progressBar->setValue(12);    //设置当前值qDebug() << ui->progressBar->value(); //获取当前值ui->progressBar->setAlignment(Qt::AlignCenter); //设置文本对齐方式,这里的文本是进度条当前显示的百分比值//对齐方式有4种ui->progressBar->setTextVisible(false);    //设置进度条数字是否可见ui->progressBar->setInvertedAppearance(true); //设置是否反向增长ui->progressBar->setOrientation(Qt::Horizontal); //设置进度条的增长方向,Qt::Horizontal是从左往右增长(默认),ui->progressBar->setOrientation(Qt::Vertical);   //Qt::Vertical是从下往上增长
}Widget::~Widget()
{delete ui;
}

案例2:设置进度条自动增长,并使用QPalette进行样式调整(比较难)

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>class QTimer;QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//void test();QTimer* timer;private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H

注意:按照cpp的语法,如果只是要使用某个类的指针,可以进行类的向前声明而无需包含头文件。

#include "widget.h"
#include "ui_widget.h"
#include <QTimer> //这样的话.cpp还是得包含
#include<QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//  test();//创建一个进度条,每隔100ms进度+1ui->progressBar->setMaximum(100);ui->progressBar->setMinimum(0);ui->progressBar->setValue(0);ui->progressBar->setAlignment(Qt::AlignCenter);ui->progressBar_2->setAlignment(Qt::AlignCenter);  //利用样式表可以将进度条设置为红色的, 设置sheetStyle完后文本显示会有点bug,需要重新调整ui->progressBar_3->setAlignment(Qt::AlignCenter);ui->progressBar_4->setAlignment(Qt::AlignCenter);//ui->progressBar->setOrientation(Qt::Vertical); //QProgressBar 在垂直方向时,默认不会显示文本(百分比)//如果要保留原本QT的白条推进样式就只能使用调色板进行调色而不改变样式,如下//按钮的ui->pushButton->setStyleSheet("");QPalette p2 = ui->pushButton->palette();p2.setColor(QPalette::Background, QColor("#FF0000"));   //Background对所有控件的调整都无效?p2.setColor(QPalette::Button, QColor("#FF0000"));       //Button仅调整按钮边框ui->pushButton->setPalette(p2);ui->pushButton->setAutoFillBackground(true);ui->pushButton->update();//进度条的//猜的:基本判断为QPalette对进度条不换样式仅换颜色的修改无效,有可能是因为setColor的第一个参数不存在进度条对象的描述,尤其是“chunk”部分//也有可能在windows平台不太支持QPalette的部分用法ui->progressBar_4->setStyleSheet("");QPalette p = ui->progressBar_4->palette();            //将样式的调色板对象调出来p.setColor(QPalette::Highlight, QColor("#FF0000"));
//    p.setColor(QPalette::Button, QColor("#FF0000"));
//    p.setColor(QPalette::Background, QColor("#FF0000"));     // 调整chunk 主色(高亮块)ui->progressBar_4->setPalette(p);ui->progressBar_4->setAutoFillBackground(true);ui->progressBar_4->update();}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{//Widget窗体的 改变窗体颜色生效this->setStyleSheet("");QPalette p3 = this->palette();p3.setColor(QPalette::Window, QColor("#1C3141"));this->setPalette(p3);ui->progressBar_4->setAutoFillBackground(true);}void Widget::on_pushButton_2_clicked()
{timer = new QTimer(this);connect(timer, &QTimer::timeout, this, [this](){int value = ui->progressBar->value();if (value >= ui->progressBar->maximum()){//进度条满了就停止timer->stop();}ui->progressBar->setValue(++value);ui->progressBar_2->setValue(++value);ui->progressBar_3->setValue(++value);ui->progressBar_4->setValue(++value);});timer->start(10);
}

QPalette 是 Qt 框架中的一个类,用于管理和控制应用程序的颜色方案。它定义了各种图形界面元素的颜色,如窗口背景、文本颜色、按钮颜色等。通过使用 QPalette,可以轻松地自定义应用程序的外观,以满足特定的设计需求

我们使用这个的目的是为了在不改变进度条原有样式(进度条增加的时候会有个白块向后推的样式)的基础上,只改变颜色,使用sheetstyle进行样式表调整是不行的如上红色的就是。

但是经过我一早上的研究,看了很多资料包括官方文档,得出结论是在windows系统下根本无法用QPalette完成对控件的样式调整,只对widget背景界面有效果(如上),对button也无法做到很好的调整仅仅调整了边框,为什么呢,按理来说进度条是属于highlight呀,有人会认为是进度条的高亮块属于chunk,人家本来就没有这种样式的调整,但是我试了按钮的使用button方法也不行,所以我给出有个更激进的原因如下:windows系统本身对QPalette的部分功能不兼容导致的。

所以如果你想用这个进行调整的话,仅对widget背景进行尝试,不要再去研究了,真的很费时的。

案例3:使用sheetstyle进行进度条的渐变等的样式调整(中等)

调整背景颜色,也就是那个进度条

调整为渐变色的关键就是上面这个qss,可以以控件最左上角为开始渐变起点x1,y1,下面的x2,y2就是渐变终点,接着按照语法可以将颜色分到不同的从0到1的位置进行填充,这里参与渐变的颜色可以有无数种只要位置在0-1之间就行了。

为什么要做渐变呢,比如宝石蓝和浅蓝的渐变配合一些白色的界面会使得这个颜色的控件更吸引人,使得蓝色更亮,如果能再做出一点立体感就更独特了。只要还是可以图形颜色的差别。很多游戏都是这么进行颜色差别的。

border-radius: 10px,这个是调整边框的圆滑性的。值越高边框越圆。

由于qt5的立体效果有点差劲,使用立体效果请移步qt6的教程。

http://www.dtcms.com/a/618485.html

相关文章:

  • 复式记账的“借”与“贷”
  • 设备健康管理诊断报告生成:工业智能化的“决策引擎”与效率革命​
  • 淘客网站是怎么做的成都网站排名生客seo怎么样
  • vscode插件开发记录
  • 做淘宝代理哪个网站好淘宝网店页面设计
  • 【Linux系统编程】进程控制
  • day2江协科技-3 GPIO
  • Photoshop文字设计基础知识
  • 自己做的网站项目怎样卖微信支付 企业网站
  • Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的少样本学习与迁移学习融合
  • 全椒县城乡建设局网站centos。wordpress
  • 南京华夏商务网做网站怎么样腾讯qq网页版
  • 网站怎么做白色字网站建设和执纪监督
  • Docker使用MinerU
  • 阿里巴巴国际站开店流程及费用福建网站建设
  • 云软件网站建设南昌公司网站建设公司
  • 做一个网站多久沈阳视频制作公司
  • 算法:位运算类型题目练习与总结
  • 中山网站建设中山国产服务器系统免费的有哪些
  • 【水下目标检测】Yolov8-GDFPN实现水下气泡智能识别系统
  • Python转义字符与原字符
  • 双语网站后台怎么做淄博网站快照优化公司
  • 两学一做知识竞答网站越秀营销型网站建设
  • JavaEE ——多线程的线程安全集合类
  • AI重塑语言教育的深层逻辑:从算法到应用的完整旅程
  • 递归算法精讲:从汉诺塔到反转链表
  • 详解 MySQL 自适应哈希
  • 开平市城乡建设局网站电商网站设计公司
  • 【每天一个AI小知识】:什么是支持向量机(SVM)?
  • AgentOS使用和可视化