qt中qlabel绘制圆形
时间: 2023-11-21 12:02:14 浏览: 101
在 Qt 中,可以通过继承 QLabel 类来实现自定义的绘制功能。下面是一个例子,展示了如何在自定义的 QLabel 中绘制圆形。
```cpp
class CircleLabel : public QLabel
{
public:
CircleLabel(QWidget* parent = nullptr) : QLabel(parent) {}
protected:
void paintEvent(QPaintEvent* event) override
{
QLabel::paintEvent(event);
// 获取 label 的矩形区域
QRect rect = this->rect();
// 创建绘图对象
QPainter painter(this);
// 设置画笔
QPen pen(Qt::black);
pen.setWidth(2);
painter.setPen(pen);
// 设置画刷
QBrush brush(Qt::red);
painter.setBrush(brush);
// 绘制圆形
painter.drawEllipse(rect);
}
};
```
在上述代码中,我们继承了 QLabel 类,并重写了其 paintEvent() 函数。在该函数中,我们创建了一个 QPainter 对象,并设置了画笔和画刷。最后,通过 drawEllipse() 函数在 label 上绘制了一个圆形。
使用该自定义的 CircleLabel 的方法与使用普通的 QLabel 相同,只需将其添加到窗口中即可。例如:
```cpp
CircleLabel* label = new CircleLabel(this);
label->setText("Hello World!");
label->setGeometry(50, 50, 100, 100);
label->show();
```
阅读全文