当前位置: 首页 > 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
http://www.dtcms.com/a/19852.html

相关文章:

  • 自助优化排名工具:智能更新网站优化
  • 考研高数复习规范
  • 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++干货分享】集合 位运算
  • AI-TRANS标准草案框架解析
  • STL中list的模拟实现
  • 145,【5】 buuctf web [GWCTF 2019]mypassword
  • 分布式 NewSQL 数据库(TiDB)
  • 基于大数据的北京市天气数据分析系统的设计与实现
  • 【C++】31.C++11​(3)
  • ShenNiusModularity项目源码学习(8:数据库操作)
  • unity学习40:导入模型的 Animations文件夹内容,动画属性和修改动画文件
  • C# Task 学习记录
  • 3、树莓派5 安装VNC查看器 开启VNC服务器