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

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.kler.cn/a/548235.html

相关文章:

  • python-leetcode-直线上最多的点数
  • 网络安全 “免疫力”:从人体免疫系统看防御策略
  • Python实现AWS Fargate自动化部署系统
  • Vscode 主题,文件图标,插件
  • CSS预处理器——SCSS的灵活语法
  • 导出mysql数据库中表字段信息到excel表中,而不是导出数据
  • LVS-DR集群构建
  • 切换镜像源(npm)
  • TCP的滑动窗口机制及其在流量控制中的作用
  • 编程题-最大子数组和(中等-重点【贪心、动态规划、分治思想的应用】)
  • C++:高度平衡二叉搜索树(AVLTree) [数据结构]
  • 【电脑】u盘重装win7
  • 工作一个月的经历和总结
  • docker 进阶命令(基于Ubuntu)
  • LLM(大模型)评估综述:现状、挑战与未来方向
  • qt的QSizePolicy的使用
  • 面试总结:Qt 信号槽机制与 MOC 原理
  • 生成式人工智能:技术革命与应用图景
  • [C++语法基础与基本概念] std::function与可调用对象
  • Java 大视界 -- 绿色大数据:Java 技术在节能减排中的应用与实践(90)