Qt小例子学习75 - 把QGraphicsItem 保存到文本然后读出来显示_qt qgraphicspathitem 保存 读取saveitem-程序员宅基地

技术标签: Qt小例子  

Qt小例子学习75 - 把QGraphicsItem 保存到文本然后读出来显示

#include "utils.h"

#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QGraphicsLineItem>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QTimer>

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

    QGraphicsView view(new QGraphicsScene);

    QGraphicsEllipseItem *eitem = view.scene()->addEllipse(
                                      QRect(10, 10, 80, 50), QPen(Qt::green), QBrush(Qt::black));
    eitem->setPos(100, 10);
    eitem->setRotation(60);

    QGraphicsLineItem *litem =
        view.scene()->addLine(QLineF(0, 0, 100, 100), QPen(Qt::red));
    litem->setPos(10, 10);
    litem->setRotation(100);

    QGraphicsRectItem *ritem = view.scene()->addRect(
                                   QRect(10, 0, 100, 100), QPen(Qt::blue), QBrush(Qt::red));
    ritem->setPos(10, 100);
    ritem->setRotation(10);

    QPainterPath path;
    path.moveTo(100, 100);
    path.lineTo(10, 0);
    path.addRect(QRect(0, 0, 100, 22));
    QGraphicsPathItem *pitem =
        view.scene()->addPath(path, QPen(Qt::green), QBrush(Qt::black));
    pitem->setPos(100, 22);
    pitem->setRotation(120);

    QGraphicsPixmapItem *pixmapitem = new QGraphicsPixmapItem;
    pixmapitem->setPixmap(QPixmap(":/image.png"));
    view.scene()->addItem(pixmapitem);

    QGraphicsItem::GraphicsItemFlags flags =
        QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable |
        QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemClipsToShape |
        QGraphicsItem::ItemClipsChildrenToShape;

    for (QGraphicsItem *it : view.scene()->items())
    {
    
        it->setFlags(flags);
    }

    QTimer::singleShot(4000, [&view]()
    {
    
        qDebug() << "writing ...";
        QFile fileOut("file.txt");
        if (fileOut.open(QIODevice::WriteOnly))
        {
    
            QDataStream out(&fileOut);
            saveItems(view.scene()->items(), out);
            fileOut.close();
            qDebug() << "clear items";
            view.scene()->clear();
        }
    });

    QTimer::singleShot(5000, [&view]()
    {
    
        qDebug() << "reading ...";
        QFile fileIn("file.txt");
        if (fileIn.open(QIODevice::ReadOnly))
        {
    
            QDataStream in(&fileIn);
            QList<QGraphicsItem *> items = readItems(in);
            for (QGraphicsItem *item : items)
            {
    
                view.scene()->addItem(item);
            }
        }
    });

    view.show();
    return a.exec();
}

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/TM1695648164/article/details/119698280

智能推荐

【配电网重构】基于SOE算法的多时段随机配电网重构方法【IEEE33节点、IEEE84节点】(Matlab代码实现)_ieee65节点-程序员宅基地

文章浏览阅读430次。配电网重构(DNR)的目的是确定配电网的最优拓扑结构,是降低电网功率损耗的有效措施。电力负荷需求和光伏(PV)输出是不确定的,并随时间变化,将影响最佳网络拓扑结构。单小时确定性DNR无法处理这种不确定性和可变性。为此,本文提出了求解多小时随机DNR (SDNR)的方法。现有的DNR求解方法要么不准确,要么过于耗时,因此无法求解大型配电网的多小时sdnr。为此,提出了一种开关开交换(SOE)方法。从所有开关关闭的环路网络开始,SOE由三个步骤组成。第一步是依次打开开关,直到打开所有循环。_ieee65节点

拦截器Interceptor-程序员宅基地

文章浏览阅读2.7w次,点赞44次,收藏253次。拦截器 是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。作用:可以构成拦截器栈,完成特定功能。比如日志记录、登录判断、权限检查等作用。好处:拦截器也可以让你将通用的代码模块化并作为可重用的类。拦截器的应用:AOP、需要有一些业务逻辑(需要注入Bean等)理解:拦截器可以说相当于是个过滤器:就是把不想要的或不想显示的内容给过滤掉。拦截器可以抽象出一部分代码可以用来完善原来的方法。同时可以减轻代码冗余,提高重用率。比如在登入一个页面时,如果要求._拦截器

解决echarts中地图重叠问题_echarts地图文字重叠解决方案-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏5次。在使用Echarts开发项目时,困扰许久的地图重叠问题,无意间在echarts官方文档中找到了解决方案。示例:如上图,其代码如下:geo: { backgroundColor:'#232e67', map: 'china', roam: true,},series: [ { backgroundColor:'#232e67', name: '用户分布', type: 'map', mapType: 'china', data: [] }]该写法会_echarts地图文字重叠解决方案

vue-cli 配置多环境打包_debugger attached. > [email protected]程序员宅基地

文章浏览阅读1.9k次。情况由于目前前端切换 环境配置 变得比较频繁 之前的手动切换环境配置的方式比较繁琐且容易遗漏或者出错 配置多环境,可以实现一键打包测试包或生产包初步实现npm run dev // 本地运行--开发环境npm run dev:test // 本地运行--测试环境npm run build:test // 打包发布--开发环境npm run build:prod // 打包发布--测试环境步骤1.在根目录新建文件.env.dev、.env.testenv、 .env.pr_debugger attached. > [email protected] lint > vue-cli-service li

解决:Assign object to a variable before exporting as module default-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏4次。export default { user: {}}解决:const user = { user: {}}export default user;_assign object to a variable before exporting as module default

Nature 新研究发布,GPT 驱动的机器人化学家能够自行设计和进行实验,这对科研意味着什么?_gpt4 生物学科研-程序员宅基地

文章浏览阅读2k次,点赞28次,收藏21次。如此一来,假设要求 Coscientist 合成某种物质时,Coscientist 会在互联网上搜索合成路线,然后设计所需反应的实验方案,下一步编写代码来指导移液机器人,最后运行代码,使机器人执行其预定的任务。PYTHON 指令控制 Code execution 模块,Code execution 是一个隔离的 Docker 容器,提供一个独立的 python 执行环境,可以完成实验相关的计算工作。能够完成如此复杂的实验任务,关键在于多模块交互的系统架构。比如,在云实验室中远程操控移液机器人开展实验。_gpt4 生物学科研

随便推点

快速理解复杂系统组成学习内容整合-程序员宅基地

文章浏览阅读1.5w次,点赞23次,收藏17次。复杂系统是由多个相互关联、相互作用的组件组成的大型系统,通过这些组件的协同工作来完成特定的任务或提供特定的服务。在设计复杂系统时,通常会考虑以下五个关键模块:接入系统 (Access System)+应用系统 (Application System)+基础平台 (Foundation Platform)+中间件 (Abundant External Middleware)+支撑系统 (Supporting System)_复杂系统组成

WIN7服务器配置之MySQL数据库安装图解(适用于5.1,5.5的版本)_win7 mysql 管理器-程序员宅基地

文章浏览阅读1.5k次。我用的mysql-5.5.9-win32.msi版本的,你可以从这里下载5.5最新版本的,安装和配置都是一样的,关于其中一些版本的区别:The Essentials Package:不包含 embedded server and benchmark suite,有自动安装程序和配置向导,没有MySQL Documentation;The Complete Package:包含 embedded_win7 mysql 管理器

工厂设计模式-程序员宅基地

文章浏览阅读5.4k次,点赞5次,收藏13次。1、概念工厂模式分三种:简单工厂模式、工厂方法模式、抽象工厂模式简单工厂模式(Simple Factory Pattern):属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式严重违背了“开闭原则”,难以拓展。工厂方法模式(Factory Method):定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为_工厂设计模式

cocos creator - WebView内部页面的交互和层级问题-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏24次。我们知道creator里的WebView,VideoPlayer等特殊组件有一个非常严重的问题,就是不管你怎么设置层级,这类组件始终处于最上层!其他UI组件会被遮挡。我们打开浏览器运行,F12检测元素就可以清楚的看到他们的层级关系。如下图:通过上图我们可以清楚的看到,video(videoPlayer组件) 和 iframe(webView组件) 在 canvas(GameCanvas) ...

高级运维必会技术栈_运维技术栈-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏29次。高级运维必会技术栈_运维技术栈

AWS新用户入门学习必备知识_aws基础知识-程序员宅基地

文章浏览阅读1.2w次,点赞15次,收藏109次。AWS新用户入门学习必备知识博主介绍亚马逊云科技的历史Amazon Elastic Compute Cloud添加服务器,部署第一个应用需要了解的知识点计算机服务通过管理控制台启动EC2实例如果管理Amazon EC2网络网络服务Amazon VPC功能子网(Subnet)子网类型公有子网带有 NAT 网关的私有子网隔离的私有子网安全组与NACL存储服务数据存储选项Amazon EC2 中EBS与实列存储什么是EBS性能测试Amazon EC2 实例存储备份数据Amazon EFS介绍Amazon EFS_aws基础知识

推荐文章

热门文章

相关标签