2:可设置精确度,最大支持小数点后3位
3:可设置圆弧宽度
4:可设置开始旋转角度/结束旋转角度
5:可设置仪表盘的标题
6:可设置背景颜色/进度颜色/值颜色/文字颜色
7:自适应窗体拉伸,文字自动缩放
8:可自由拓展各种渐变色
9:可设置百分比模式,自动计算值换算成百分比
三、效果图
2e5ce1fa31550d7b88eecbbb8ac5197b.gif
四、头文件代码
#ifndef PROGRESSARC_H
#define PROGRESSARC_H
/**
* 百分比仪表盘控件 作者:feiyangqingyun(QQ:517216493) 2018-8-30
* 1:可设置范围值,支持负数值
* 2:可设置精确度,最大支持小数点后3位
* 3:可设置圆弧宽度
* 4:可设置开始旋转角度/结束旋转角度
* 5:可设置仪表盘的标题
* 6:可设置背景颜色/进度颜色/值颜色/文字颜色
* 7:自适应窗体拉伸,文字自动缩放
* 8:可自由拓展各种渐变色
* 9:可设置百分比模式,自动计算值换算成百分比
*/
#include <QWidget>
#ifdef quc
#if (QT_VERSION <QT_VERSION_CHECK(5,7,0))
#include <QtDesigner/QDesignerExportWidget>
#else
#include <QtUiPlugin/QDesignerExportWidget>
#endif
class QDESIGNER_WIDGET_EXPORT ProgressArc : public QWidget
#else
class ProgressArc : public QWidget
#endif
{
Q_OBJECT
Q_PROPERTY(double minValue READ getMinValue WRITE setMinValue)
Q_PROPERTY(double maxValue READ getMaxValue WRITE setMaxValue)
Q_PROPERTY(double value READ getValue WRITE setValue)
Q_PROPERTY(int precision READ getPrecision WRITE setPrecision)
Q_PROPERTY(int startAngle READ getStartAngle WRITE setStartAngle)
Q_PROPERTY(int endAngle READ getEndAngle WRITE setEndAngle)
Q_PROPERTY(QColor arcColor READ getArcColor WRITE setArcColor)
Q_PROPERTY(QColor textColor READ getTextColor WRITE setTextColor)
Q_PROPERTY(QColor titleColor READ getTitleColor WRITE setTitleColor)
Q_PROPERTY(QColor baseColor READ getBaseColor WRITE setBaseColor)
Q_PROPERTY(QColor bgColor READ getBgColor WRITE setBgColor)
Q_PROPERTY(bool percent READ getPercent WRITE setPercent)
Q_PROPERTY(int arcWidth READ getArcWidth WRITE setArcWidth)
Q_PROPERTY(QString title READ getTitle WRITE setTitle)
public:
explicit ProgressArc(QWidget *parent = 0)
~ProgressArc()
protected:
void paintEvent(QPaintEvent *)
void drawArc(QPainter *painter)
void drawValue(QPainter *painter)
void drawTitle(QPainter *painter)
private:
double minValue //最小值
double maxValue //最大值
double value //目标值
int precision //精确度,小数点后几位
int startAngle//开始旋转角度
int endAngle //结束旋转角度
QColor arcColor //圆弧颜色
QColor textColor //文字颜色
QColor titleColor //标题颜色
QColor baseColor //基准颜色
QColor bgColor//背景颜色
bool percent //百分比模式
int arcWidth //圆弧宽度
QString title //标题
public:
double getMinValue()const
double getMaxValue()const
double getValue() const
int getPrecision() const
int getStartAngle() const
int getEndAngle() const
QColor getArcColor()const
QColor getTextColor() const
QColor getTitleColor() const
QColor getBaseColor() const
QColor getBgColor() const
bool getPercent() const
int getArcWidth() const
QString getTitle() const
QSize sizeHint()const
QSize minimumSizeHint() const
public Q_SLOTS:
//设置范围值
void setRange(double minValue, double maxValue)
void setRange(int minValue, int maxValue)
//设置最大最小值
void setMinValue(double minValue)
void setMaxValue(double maxValue)
//设置目标值
void setValue(double value)
void setValue(int value)
//设置精确度
void setPrecision(int precision)
//设置开始旋转角度
void setStartAngle(int startAngle)
//设置结束旋转角度
void setEndAngle(int endAngle)
//设置圆弧颜色
void setArcColor(const QColor &arcColor)
//设置文本颜色
void setTextColor(const QColor &textColor)
//设置标题颜色
void setTitleColor(const QColor &titleColor)
//设置基准颜色
void setBaseColor(const QColor &baseColor)
//设置背景颜色
void setBgColor(const QColor &bgColor)
//设置百分比模式
void setPercent(bool percent)
//设置圆弧宽度
void setArcWidth(int arcWidth)
//设置标题
void setTitle(const QString &title)
Q_SIGNALS:
void valueChanged(int value)
}
#endif // PROGRESSARC_H
五、核心代码
void ProgressArc::paintEvent(QPaintEvent *)
{
int width = this->width()
int height = this->height()
int side = qMin(width, height)
//绘制准备工作,启用反锯齿,平移坐标轴中心,等比例缩放
QPainter painter(this)
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing)
//绘制背景
if (bgColor != Qt::transparent) {
painter.setPen(Qt::NoPen)
painter.fillRect(this->rect(), bgColor)
}
painter.translate(width / 2, height / 2)
painter.scale(side / 200.0, side / 200.0)
//绘制圆弧
drawArc(&painter)
//绘制当前值
drawValue(&painter)
//绘制标题
drawTitle(&painter)
}
void ProgressArc::drawArc(QPainter *painter)
{
int radius = 99 - arcWi
QPushButton *btn = new QPushButton()// 设置btn的样式,白字 + 黑底
btn->setStyleSheet("QPushButton{color: whitefont: 13pt 微软雅黑 boldbackground-color:black}"):
你想设置什么颜色都可以,支持rgb配色
本回答由提问者推荐
Qt5 QPlainTextEdit设置背景颜色代码如下:codeeditor->setStyleSheet("background-color:lightYellow")
文字的颜色设置:
QPlainTextEdit edit
QPalette p = edit.palette()
p.setColor(QPalette::Active, QPalette::Base, Qt::red)
p.setColor(QPalette::Inactive, QPalette::Base, Qt::red)
edit.setPalette(p)
Qt 是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)