浮生若茶263 2023-03-10 18:20 采纳率: 75%
浏览 52
已结题

qt画一个四象限坐标系,可缩放旋转,刻度变化的,坐标轴可移动的

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();
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 3月10日

悬赏问题

  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元