我想在我的主窗体上绘制图形,所以我想我会使用QLabel并覆盖它。就像这样:覆盖QLabel能够绘制图形
// drawlabel.h
class DrawLabel : public QLabel
{
Q_OBJECT
public:
DrawLabel(QWidget *parent = 0);
private:
void paintEvent(QPaintEvent *);
};
// drawlabel.cpp
DrawLabel::DrawLabel(QWidget *parent)
: QLabel(parent)
{
}
void DrawLabel::paintEvent(QPaintEvent *)
{
qDebug() << "paint event" ;
QPainter painter(this);
painter.setPen(QPen(QBrush(QColor(0,0,0,180)),1,Qt::DashLine));
painter.setBrush(QBrush(QColor(255,255,255,120)));
QRect selectionRect(10, 10, 100, 101);
painter.drawRect(selectionRect);
}
在我的主窗口,我droppde一个QLabel,其大小约500x200,并晋升为DrawLLabel。当应用程序运行时,表单上会绘制一个虚线正方形。
目前为止都不错。
如果我加上这一行: this-> setText(“123456”);
进入DrawLabel构造函数,或将其添加到paintEvent()中我看不到文本。我也想能够在DrawLabel周围有一个边框,但是
this->setFrameShape(QFrame::Box);
在构造函数中也不起作用。
我该怎么做才能使这些工作?
一个建议:在'paintevent'声明中加上'override'。如果您可能拼错,这很有用。 – Zen