Qt绘图 点 直线 矩形

一 重绘事件

重绘事件函数

void paintEvent(QPaintEvent *);

所有的绘图都是在该函数中完成。

哪些情况会调用重绘函数:
1、repaint()函数或者update()函数被调用;
2、在窗口部件第一次显示时,系统会自动产生一个绘图事件,从而强制绘制这个窗口部件;
3;等(自己百度paintEvent函数相关介绍N多)。
补充:paintEvent(QPaintEvent*)函数是QWidget类中的虚函数。

二 QPainter、QPaintDevice
大家可以想象一下自己小时候是如何画画的。
首先,你要有工具:画笔;其次,你要有画板,白纸等设备吧,不然你画在哪里。
Qt提供 类QPainter 帮助我们完成画画, 就相当于我们小时候使用的画笔。
Qt提供类QPaintDevice相当于画板,白纸等设备。

三 代码实现绘制点、线,矩形

1、Qt中新建一个Gui 应用 ,注意基类选择 QWidget(对应paintEvent来源于QWidget),类名自己喜好了这里我是采用系统默认。
2、我们需要在mainwindow.h中加入重绘函数的声明;

protected:
    void paintEvent(QPaintEvent *);

3、我们在mainwindow.cpp中实现该函数

void MainWindow::paintEvent(QPaintEvent *)
{
   //当你运行程序时,该函数会被自动调用,前面重绘函数部分已经说过了哦。
   //现在我们第一步是要有画笔,我们建立一个画笔对象
   QPainter painter(this);
   //此时painter就是我们自己的画笔了,我们开始画画,现在我要先画一个点,QPainter 给我们提供了丰富的方法,画一个点void drawPoint(int x, int y)
   painter.drawPoint(100,100);//
   //t同理直线
  // void drawLine(const QPoint &p1,const QPoint $p2)
   painter.drawLine(QPoint(1,1),QPoint(100,101);//QPoint代表什么,如果你是初学者百度QPoint,百度大神会详细的告诉你

    painter.drwRect(1,1,100,100);//绘制矩形


}

运行程序就会看到我们想看到的结果啦。

以上我们新建的画笔为默认的。默认的即画笔的颜色粗细啦,都是默认的值。如果我们想让我们的画笔厉害起来。比如小时候用的彩笔,有一大盒里面各种颜色的都有。我们怎么知道QPainter给我们提供了哪些厉害的东西呢。
很简单把你的鼠标箭头放到程序中的QPainter上面,然后按下键盘的F1键。此时会出现如下:
Qt绘图 点 直线 矩形_第1张图片

我们往下面找一找可以看到QPainter给我们提供的所有方法。

你可能感兴趣的:(Qt绘图 点 直线 矩形)