Qt之QPainter用法
void MainWindow::paintEvent(QPaintEvent *event) { /* 画圆 */ QRectF rect_ellipse(100.0, 100.0, 80.0, 80.0); QPainter painter(this); painter.setPen(Qt::blue); painter.drawEllipse(rect_ellipse); /* 画字 */ painter.setFont(QFont("Arial", 50)); painter.drawText(rect(), Qt::AlignCenter, "关于"); /* 画多边形 */ QRectF rect_angle(100.0, 20.0, 80.0, 60); int start_angle = 30 * 16; int span_angle = 120 * 16; painter.drawArc(rect_angle, start_angle, span_angle); QPointF points[4] = { QPointF(10.0, 80.0), QPointF(20.0, 10.0), QPointF(80.0, 30.0), QPointF(90.0, 70.0), }; painter.drawConvexPolygon(points, 4); /* 画线 */ QLineF line(QPoint(0, 0), QPoint(100.0, 100.0)); painter.drawLine(line); QPointF points_1[3] = { QPointF(110.0, 180.0), QPointF(120.0, 110.0), QPointF(180.0, 130.0), }; painter.drawPolyline(points_1, 3); /* 画矩形 */ QRectF rectangle(200.0, 20.0, 80.0, 60.0); painter.drawRect(rectangle); /* 画圆角矩形 */ QRectF rectangle_1(200.0, 120.0, 80.0, 60.0); painter.drawRoundedRect(rectangle_1, 15.0, 15.0); /* 画单个点 */ QPen pen; pen.setWidth(6); pen.setColor(Qt::red); painter.setPen(pen); painter.drawPoint(200, 200); /* 画多个点 */ QPointF point[10]; painter.setPen(pen); for (int i = 0; i < 10; ++i) { point[i].setX(2.0 + i * 10); point[i].setY(130.0); } painter.drawPoints(point, 10); /* 画单个直线 */ pen.setWidth(5); pen.setColor(Qt::red); painter.setPen(pen); painter.drawLine(rect().topLeft(), rect().bottomRight()); /* 画圆点 */ painter.setPen(QColor(Qt::transparent)); painter.setBrush(QBrush(Qt::red)); painter.drawEllipse(100,250,10,10); QWidget::paintEvent(event); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?