用C++和Qt creator写一个圆形加载的进度条
时间: 2024-05-12 17:18:19 浏览: 168
好的,我会为您提供一个实现圆形加载进度条的代码示例。以下是用C和Qt creator编写的代码:
```c++
#include <QtWidgets>
#include <QtGui>
class CircularProgress : public QWidget {
public:
CircularProgress(QWidget* parent = nullptr)
: QWidget(parent)
{
m_color = QColor(Qt::green);
m_backgroundColor = QColor(Qt::gray);
m_value = 0;
setMinimumSize(50, 50);
}
void setColor(const QColor& color)
{
m_color = color;
update();
}
void setBackgroundColor(const QColor& color)
{
m_backgroundColor = color;
update();
}
void setValue(int value)
{
m_value = value;
update();
}
protected:
void paintEvent(QPaintEvent* event) override
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
QRect rect = QRect(0, 0, width(), height());
// Draw background circle
painter.setPen(Qt::NoPen);
painter.setBrush(m_backgroundColor);
painter.drawEllipse(rect);
// Draw progress circle
painter.setBrush(m_color);
painter.drawPie(rect, 90*16, ((m_value*360)/100)*16);
}
private:
QColor m_color;
QColor m_backgroundColor;
int m_value;
};
int main(int argc, char **argv)
{
QApplication app(argc, argv);
CircularProgress progressBar;
progressBar.setColor(Qt::green);
progressBar.setBackgroundColor(Qt::gray);
progressBar.setValue(50);
QVBoxLayout layout;
layout.addWidget(&progressBar);
QWidget window;
window.setLayout(&layout);
window.show();
return app.exec();
}
```
这是一个很简单的示例,其中`CircularProgress`类继承自`QWidget`,并实现了`paintEvent`函数,用于绘制圆形进度条的前景和背景。在`main`函数中,我们创建了一个`CircularProgress`对象,并通过`setColor`、`setBackgroundColor`和`setValue`函数设置了进度条颜色、背景颜色和当前值。最后,我们将进度条添加到`QVBoxLayout`中,并将其显示在窗口中。
阅读全文