在QWidget上绘制

时间:2016-10-26 14:13:38

标签: qt inheritance drawing

如何在QWidget上绘制(我表单上的元素)?

我阅读了很多教程,但没有一个涵盖我真正需要做的事情(在QWidget上绘制一些Rect)。

我创建了一个继承自QWidget的类MyFigure,甚至在paint中写了一些代码来绘制一个矩形。 然后,在我的表单创建中,我创建了MyFigure对象,然后只显示它。

它没有“工作!!!”

1 个答案:

答案 0 :(得分:1)

QGraphicsView和QGraphicsScene适合绘画,但如果你想在QWidget上画画,你需要重新实现paintEvent:

#include <QWidget>
#include <QPainter>
#include <QPaintEvent>
class Widget : public QWidget
{
public:
    explicit Widget(QWidget *parent=0);

    void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
};

Widget::Widget(QWidget *parent) : QWidget(parent)
{
}

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter;
    painter.begin(this);
    painter.fillRect(event->rect(), Qt::white);
    QWidget::paintEvent(event);
    painter.end();
}

此代码将以白色填充您的小部件。