Qt——QPainter画图

QPainter 一般在部件的绘图事件 paintEvent() 中进行绘制,首先创建 QPainter 对象,然后进行图形的绘制,最后记得销毁 QPainter 对象。当窗口程序需要升级或者重新绘制时,调用此成员函数。使用 repaint()和 update() 后,调用函数 paintEvent()。
paintevent事件在主窗口中绘制,为了能够在制定控件中绘制图形,使用事件过滤器,能够到指定的空间中绘制图形

bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == ui->warnAreaLabel && event->type() == QEvent::Paint)
    {
        Draw();
    }
    return QMainWindow::eventFilter(watched,event);
}

下边是一段示例:

void MainWindow::Draw()
{
 QPainter painter(ui->frame_window);  //括号内设置画图位置 
 QPen pen;
 painter.setRenderHint(QPainter::Antialiasing, true);
 pen.setColor(Qt::gray);
 pen.setWidth(1);
 painter.setPen(pen);
 painter.drawLine(x_1,y_1,x_2,y_2);      //直线

pen2.setColor(Qt::gray);
QFont font("Arial",12,QFont::Normal);//设置字体的类型,大小,加粗,斜体
painter.setPen(pen2);
painter.setFont(font);
text_scale = QString("%1").arg(scale/Arc_Num*i);
text_scale.append("m ");
painter.drawText(QPoint(x_1,y_1),text_scale);
}

直线

(x1,y1)与(x2,y2)分别为直线的起始点的坐标,直接带入下边的程序就是可以进行绘图。

painter.drawLine(x1,y1,x2,y2);

圆弧

绘制一个圆的圆弧,不绘制整个圆的时候我们就需要用到drawArc()函数,首先需要我们定义一个矩形,矩形的大小为半个圆的大小,然后在drawArch函数中输入矩形,起始角度16与跨越角度16,这个是函数中设定的参数,再次强调,角度需要乘16。

QRectF rect(x,y,w,h);
painter.drawArc(rect, startAngle * 16, spanAngle * 16);  //绘制圆弧

显示文字内容

直接设置文字的格式,设定需要放置的位置,使用drawText函数进行放置就是可以的。

QPen pen5;
QString textScale;
QFont font1("Arial",12,QFont::Normal);         //设置字体的类型,大小,加粗,斜体
textScale.append("Hello World!");             //设置显示文字的内容
pen5.setColor(Qt::darkGreen);                  //设置字体的颜色
painter.setPen(pen5);
painter.setFont(font1);
painter.drawText(QPoint(x,y),textScale);       //设置显示文字的位置

画点

直接使用drawPoint函数画点。

penPointshow.setColor(Qt::red);
penPointshow.setWidth(10);
penPointshow.setCapStyle(Qt::MPenCapStyle);
penPointshow.setStyle(Qt::DashDotDotLine);
painter.setPen(penPointshow);
painter.drawPoint(x,y);

参考

Qt 之图形 QPainter 的基本绘图 - CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值