Qt QGraphicsScene中显示网格
QGraphicsLineItem
直接添加 QGraphicsLineItem 类型的item即可,在scene中拖动或者缩放时候,网格不会变形和模糊。
QPen pen2(QColor(128, 128, 128, 50)); for (float x = 0.5 * MAP_SCALE; x <= GRID_RANGE * MAP_SCALE; x += 0.5 * MAP_SCALE) { QLineF line(x, 0, x, GRID_RANGE * MAP_SCALE); QGraphicsLineItem* tmpVertical = new QGraphicsLineItem(line); tmpVertical->setPen(pen2); gridItermVec.push_back(tmpVertical); if (show_grid_) { addItem(tmpVertical); } } //现在添加水平线 for (float y = 0.5 * MAP_SCALE; y <= GRID_RANGE * MAP_SCALE; y += 0.5 * MAP_SCALE) { QLineF line(0, y, GRID_RANGE * MAP_SCALE, y); QGraphicsLineItem* tmpHorizontal = new QGraphicsLineItem(line); tmpHorizontal->setPen(pen2); gridItermVec.push_back(tmpHorizontal); if (show_grid_) { addItem(tmpHorizontal); } }
显示效果如下
QPixmap
1. QGraphicsScene继承类中的构造函数
2.重写 类的虚函数 void drawBackground(QPainter *painter, const QRectF &rect);
QPolygonF myPolygon1; myPolygon1 << QPointF(0, 10) << QPointF(20, 10); QPolygonF myPolygon2; myPolygon2 << QPointF(10, 0) << QPointF(10, 20); QPixmap pixmap(20, 20); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); QVector<qreal> dashes;//line style--虚线 qreal space = 2; dashes << 2 << space << 2 << space; QPen pen(Qt::lightGray, 1); pen.setDashPattern(dashes); pen.setWidth(1); painter.setPen(pen); painter.translate(0, 0); painter.drawPolyline(myPolygon1); painter.drawPolyline(myPolygon2); this->setBackgroundBrush(pixmap);*/
或者如下代码
QPolygonF mypolygon1, mypolygon2; mypolygon1 << QPointF(0, 5) << QPointF(10, 5); mypolygon2 << QPointF(5, 0) << QPointF(5, 10); QPixmap pix(10, 10); pix.fill(Qt::transparent); QPainter painter(&pix); QVector <qreal> dashes; dashes << 2 << 2 << 2 << 2; QPen pen(Qt::darkCyan, 0.2); pen.setDashPattern(dashes); painter.setPen(pen); painter.translate(0, 0); painter.drawPolyline(mypolygon1); painter.drawPolyline(mypolygon2); this->setBackgroundBrush(pix);
二者没有本质区别都是用Qpixmap 作为背景实现的栅格,但是在 QGraphicsScene 中拖动鼠标时候会造成重影,目前不知道怎么消除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!