qt自定义 进度条
时间: 2023-10-17 19:06:31 浏览: 160
您可以通过继承 QProgressBar 类并重新实现绘制函数来自定义 Qt 进度条。
以下是一个示例代码:
```cpp
#include <QtWidgets>
class CustomProgressBar : public QProgressBar
{
public:
explicit CustomProgressBar(QWidget* parent = nullptr)
: QProgressBar(parent)
{
setMinimum(0);
setMaximum(100);
}
protected:
void paintEvent(QPaintEvent* event) override
{
QPainter painter(this);
// 绘制背景
painter.fillRect(rect(), Qt::white);
// 绘制进度条
int progressWidth = static_cast<int>(rect().width() * static_cast<double>(value()) / maximum());
QRect progressRect(rect().topLeft(), QSize(progressWidth, rect().height()));
painter.fillRect(progressRect, Qt::blue);
// 绘制文本
QString text = QString::number(value()) + "%";
painter.setPen(Qt::black);
painter.drawText(rect(), Qt::AlignCenter, text);
}
};
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QMainWindow mainWindow;
QWidget* centralWidget = new QWidget(&mainWindow);
QVBoxLayout* layout = new QVBoxLayout(centralWidget);
CustomProgressBar* progressBar = new CustomProgressBar(&mainWindow);
progressBar->setValue(50);
layout->addWidget(progressBar);
mainWindow.setCentralWidget(centralWidget);
mainWindow.show();
return app.exec();
}
```
在此示例中,我们创建了一个名为 `CustomProgressBar` 的自定义进度条类。我们重新实现了 `paintEvent` 函数来绘制自己的进度条样式。在这个示例中,我们使用白色作为背景,蓝色作为进度条的颜色,并在进度条上方绘制了当前的进度文本。
您可以根据自己的需求修改绘制函数以实现您想要的效果。
阅读全文