技术标签: 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();
}
文章浏览阅读430次。配电网重构(DNR)的目的是确定配电网的最优拓扑结构,是降低电网功率损耗的有效措施。电力负荷需求和光伏(PV)输出是不确定的,并随时间变化,将影响最佳网络拓扑结构。单小时确定性DNR无法处理这种不确定性和可变性。为此,本文提出了求解多小时随机DNR (SDNR)的方法。现有的DNR求解方法要么不准确,要么过于耗时,因此无法求解大型配电网的多小时sdnr。为此,提出了一种开关开交换(SOE)方法。从所有开关关闭的环路网络开始,SOE由三个步骤组成。第一步是依次打开开关,直到打开所有循环。_ieee65节点
文章浏览阅读2.7w次,点赞44次,收藏253次。拦截器 是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。作用:可以构成拦截器栈,完成特定功能。比如日志记录、登录判断、权限检查等作用。好处:拦截器也可以让你将通用的代码模块化并作为可重用的类。拦截器的应用:AOP、需要有一些业务逻辑(需要注入Bean等)理解:拦截器可以说相当于是个过滤器:就是把不想要的或不想显示的内容给过滤掉。拦截器可以抽象出一部分代码可以用来完善原来的方法。同时可以减轻代码冗余,提高重用率。比如在登入一个页面时,如果要求._拦截器
文章浏览阅读1.1w次,点赞7次,收藏5次。在使用Echarts开发项目时,困扰许久的地图重叠问题,无意间在echarts官方文档中找到了解决方案。示例:如上图,其代码如下:geo: { backgroundColor:'#232e67', map: 'china', roam: true,},series: [ { backgroundColor:'#232e67', name: '用户分布', type: 'map', mapType: 'china', data: [] }]该写法会_echarts地图文字重叠解决方案
文章浏览阅读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
文章浏览阅读3.7k次,点赞2次,收藏4次。export default { user: {}}解决:const user = { user: {}}export default user;_assign object to a variable before exporting as module default
文章浏览阅读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)_复杂系统组成
文章浏览阅读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):定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为_工厂设计模式
文章浏览阅读1.5w次,点赞5次,收藏24次。我们知道creator里的WebView,VideoPlayer等特殊组件有一个非常严重的问题,就是不管你怎么设置层级,这类组件始终处于最上层!其他UI组件会被遮挡。我们打开浏览器运行,F12检测元素就可以清楚的看到他们的层级关系。如下图:通过上图我们可以清楚的看到,video(videoPlayer组件) 和 iframe(webView组件) 在 canvas(GameCanvas) ...
文章浏览阅读5.7k次,点赞3次,收藏29次。高级运维必会技术栈_运维技术栈
文章浏览阅读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基础知识