qt画一个四象限坐标系,可缩放旋转,刻度变化的,坐标轴可移动的,看网上都是一个象限的,大家有什么好的办法
4条回答 默认 最新
- 社区专家-Monster-XH 2023-03-10 18:32关注
基于Monster 组和GPT的调写:
用Qt的图形视图框架(Graphics View Framework)来实现这个需求,该框架提供了很多图形绘制和交互的类和函数。下面是一些可能有用的类和函数:
QGraphicsScene:表示图形场景,可以在场景中添加各种图形元素,比如线段、矩形、文本等。
QGraphicsView:表示图形视图,用于显示场景,可以进行缩放、旋转、平移等操作。
QGraphicsItem:表示场景中的图形元素,可以是自定义的图形元素。
QGraphicsLineItem:表示场景中的直线元素。
QGraphicsTextItem:表示场景中的文本元素。
试试这个老代码:
#include <QApplication> #include <QGraphicsScene> #include <QGraphicsView> #include <QGraphicsLineItem> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建场景和视图 QGraphicsScene scene; QGraphicsView view(&scene); view.setRenderHint(QPainter::Antialiasing); view.setDragMode(QGraphicsView::ScrollHandDrag); view.setRenderHint(QPainter::SmoothPixmapTransform); // 设置坐标系范围 int xmin = -10; int xmax = 10; int ymin = -10; int ymax = 10; // 绘制坐标轴 QGraphicsLineItem *xAxis = new QGraphicsLineItem(xmin, 0, xmax, 0); QGraphicsLineItem *yAxis = new QGraphicsLineItem(0, ymin, 0, ymax); scene.addItem(xAxis); scene.addItem(yAxis); // 绘制坐标轴刻度 for (int i = xmin + 1; i < xmax; ++i) { QGraphicsLineItem *tick = new QGraphicsLineItem(i, -0.1, i, 0.1); scene.addItem(tick); } for (int i = ymin + 1; i < ymax; ++i) { QGraphicsLineItem *tick = new QGraphicsLineItem(-0.1, i, 0.1, i); scene.addItem(tick); } // 显示视图 view.setSceneRect(xmin, ymin, xmax - xmin, ymax - ymin); view.show(); return app.exec(); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)
- ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。