当前位置: 首页 > news >正文

qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene

qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene

在这里插入图片描述

code review!

文章目录

  • qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene
      • 1.`setScene` 方法
      • 2.通过 `scene` 获取它的视图 (`views()`)
      • 3.通过 `view` 获取它的场景 (`scene()`)
      • 4.1~3总结
      • 5.常用的 scene()->add 开头的方法
      • 6.scene()->removeItem 方法
      • 7.在 mousePressEvent 中使用 scene()->add 和 scene()->removeItem
      • 8.省略 currentScene,直接使用 scene()-> 调用相关方法

1.setScene 方法

setSceneQGraphicsView 的方法,用于将一个 QGraphicsScene 设置为该视图的显示场景。一个视图可以显示一个场景,而一个场景可以被多个视图共享。

示例代码:

#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsEllipseItem>

int main(int argc, char *argv[]) {
   
    QApplication app(argc, argv);

    // 创建一个场景
    QGraphicsScene scene;
    scene.setSceneRect(0, 0, 400, 300);  // 设置场景的范围

    // 在场景中添加一个椭圆
    QGraphicsEllipseItem *ellipse = scene.addEllipse(50, 50, 100, 100);

    // 创建一个视图,并将场景设置到视图中
    QGraphicsView view;
    view.setScene(&scene);  // 使用 setScene 设置场景
    view.resize(500, 400);
    view.show();

    return app.exec();
}

解释:

  • view.setScene(&scene) 将场景 scene 设置到视图 view 中。
  • 场景负责管理图元(如椭圆、矩形等),而视图负责将场景渲染到屏幕上。

2.通过 scene 获取它的视图 (views())

QGraphicsScene 提供了 views() 方法,可以返回一个 QList<QGraphicsView*>,表示当前与场景关联的所有视图。因为一个场景可以被多个视图共享,所以返回的是一个列表。

示例代码:

#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QDebug>

int main(int argc, char *argv[]) {
   
    QApplication app(argc, argv);

    // 创建一个场景
    QGraphicsScene scene;
    scene.setSceneRect(0, 0, 400, 300);

    // 在场景中添加一个矩形
    QGraphicsRectItem *rect = scene.addRect(100, 100, 200, 150);

    // 创建两个视图,显示同一个场景
    QGraphicsView view1;
    view1

相关文章:

  • 自助优化排名工具:智能更新网站优化
  • 考研高数复习规范
  • Linux-C/C++《七、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)
  • 《法律合唱团早新闻生成器项目上传及使用全流程文档》
  • Vue 3 30天精进之旅:Day 25 - PWA支持
  • 2025年二级建造师报名流程图解
  • 微软 Microsoft Windows Office Professional LTSC 2024 专业增强版
  • 设备智能化无线通信,ESP32-C2物联网方案,小尺寸芯片实现大功能
  • SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD
  • ai idea配置ai写代码
  • SQL进阶能力:经典面试题
  • 【信息系统项目管理师-选择真题】2022下半年综合知识答案和详解
  • MYSQL-数据恢复与备份
  • 代码随想录算法训练营第三十八天| 动态规划02
  • HBase高级技巧:解锁更强大的数据处理能力
  • 浅说树形dp
  • Dubbo 集群策略:负载均衡与容错机制
  • 非侵入式观测进程里的某个线程的tls数据
  • 141,【1】buuctf web [SUCTF 2019]EasyWeb
  • 【C++干货分享】集合 位运算
  • 乌克兰议会批准美乌矿产协议
  • 中国驻美国大使馆发言人就中美经贸高层会谈答记者问
  • 九部门:对机动车特别是货车排放问题的监管将更加严格
  • 公募基金解读“一揽子金融政策”:增量财政空间或打开,有助于维持A股活力
  • 农行原首席专家兼浙江省分行原行长冯建龙主动投案,正接受审查调查
  • 重磅金融政策密集发布!一文梳理这场国新办发布会