当前位置: 首页 > 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.lryc.cn/news/537720.html

相关文章:

  • 小白win10安装并配置yt-dlp
  • 【kafka系列】broker
  • 用大模型学大模型05-线性回归
  • Python实现AWS Fargate自动化部署系统
  • 国产编辑器EverEdit - 上下翻滚不迷路(历史编辑位置、历史光标位置回溯功能)
  • 今日写题work05
  • [C++语法基础与基本概念] std::function与可调用对象
  • 两个实用且热门的 Python 爬虫案例,结合动态/静态网页抓取和反爬策略,附带详细代码和实现说明
  • 华象新闻 | 2月20日前谨慎升级 PostgreSQL 版本
  • 跳跃游戏 II - 贪心算法解法
  • 图像质量评价指标-UCIQE-UIQM
  • CentOS上安装WordPress
  • Spring Boot 原理分析
  • Git 本地项目上传 GitHub 全指南(SSH Token 两种上传方式详细讲解)
  • jenkins服务启动-排错
  • CF 144A.Arrival of the General(Java实现)
  • SAP-ABAP:SAP中REPORT程序和online程序的区别对比
  • Java发展史
  • vue3--SVG图标的封装与使用
  • Datawhale Ollama教程笔记3
  • 学习数据结构(10)栈和队列下+二叉树(堆)上
  • 洛谷 P3660 USACO17FEB Why Did the Cow Cross the Road III 题解
  • 【数据结构】(9) 优先级队列(堆)
  • 如何提升爬虫获取数据的准确性?
  • Obsidian及Zotero常用的插件
  • 闲鱼IP属地是通过电话号码吗?
  • C#多线程异步连接MySQL与SQLserver数据库
  • 51单片机-数码管
  • C#学习之S参数读取(s2p文件)
  • Spring Boot “约定大于配置”