QGraphics
QGraphicsView和QGraphicsScene
QGraphicsScene提供一个场景,可以添加各种item,QGraphicsView用于将元素显示,并支持旋转和缩放;可以将QGraphicsScene比作世界,QGraphicsView比作摄像机
基本用法:
将item加入scene后,通过setScene放入view查看
#include <QApplication>
#include <QtWidgets>
#include <QGraphicsScene>
#include <QGraphicsView> int main(int argc,char **argv)
{
QApplication app(argc,argv); QGraphicsScene *scene = new QGraphicsScene;
QGraphicsView *view = new QGraphicsView; scene->addLine(,,,);
view->setScene(scene);
view->resize(,);
view->show(); return app.exec();
}
其他QGraphics封装的类
#include <QGraphicsLineItem>
#include <QGraphicsPixmapItem>
#include <QGraphicsTextItem>
#include <QGraphicsItemAnimation> //动画
#include <QTimeLine>
例子:
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
QGraphicsLineItem* lineItem;
QGraphicsTextItem* textItem;
QGraphicsPixmapItem* pixmapItem; _view = new QGraphicsView(this); _view->setScene(_scene = new QGraphicsScene); _scene->addItem(lineItem = new QGraphicsLineItem(QLineF(QPointF(, ), QPointF(, ))));
_scene->addItem(textItem = new QGraphicsTextItem("hello world"));
_scene->addItem(pixmapItem = new QGraphicsPixmapItem(QPixmap("../1.jpg")));
textItem->setFont(QFont("aaa", , , true));
pixmapItem->setPos(,); //设置动画
QGraphicsItemAnimation* animation = new QGraphicsItemAnimation;
animation->setItem(pixmapItem);
QTimeLine* timeline = new QTimeLine();
timeline->setLoopCount(); //次数 animation->setTimeLine(timeline);
animation->setTranslationAt(,,);
timeline->start();
}
//实现截屏
void MyWidget::mousePressEvent(QMouseEvent *ev)
{
if( ev->button() == Qt::RightButton)
{
QPixmap pixmap(size()); //初始化画布大小为窗口大小
QPainter painter(&pixmap);
painter.fillRect(QRect(,,size().width(),size().height()),Qt::white); //将画布置为白色,默认Pixmap是黑色
_view->render(&painter);
pixmap.save("../b.png");
}
}
注意render的用法,一般窗口类都有,相当于渲染,从一个对象拷贝到另一个对象
QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间;QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口。

QPaintDevice可以理解成要在哪里去绘制,QPaintDevice有很多子类,比如QImage,以及QWidget,QPixmap,QBitmap
QGraphics的更多相关文章
- 杂烩:QWidget、QGraphics、QtQuick
一说起Qt 大都会想起Qt的GUI编程,具体到某个类的话,最多的就是QWidget类及其子类了. 其实Qt中还有基于项的图形视图,具体来说QGraphicsView,QGraphicsScene,QG ...
- Qt编程之在QGraphics scene中使用图片
http://stackoverflow.com/questions/5960074/qimage-in-a-qgraphics-scene http://stackoverflow.com/ques ...
- Qt中QGraphics类坐标映射关系详解
1.Item(图元)坐标:属于局部坐标,通常以图元中心为原点(中心对称),非中心对称类,比如dialog类,一般以左上角为原点,正方向x朝右,y朝下. 2.setPos的坐标是父类坐标系的坐标,一般对 ...
- Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解
Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放.这个柜架也包 ...
- Qt中绘图坐标QPainter,Viewport与Window的关系
在Qt中常常要自己重载一些paintEvent函数,这个时候往往忽略了两个很关键的API,那就是setViewport和setWindow. Viewport,顾名思义,反应的是物理坐标,就是你实际想 ...
- 玩玩Qt(一)
最近在看一些关于游戏引擎的东西,本来是有几个游戏的小点子,其实实现起来还挺麻烦的,想找个游戏引擎看看能不能码起来.辗转之后发现了很多2D引擎,其中国产的要数cocos2dx用的好像是比较广泛,但是好多 ...
- pyqt5 动画在QThread线程中无法运行问题
自己做了一个tcp工具,在学习动画的时候踩了坑,需求是根据上线变绿色,离线变灰色,如果连接断开了,则变为灰色 问题现象: 可以看到点击"连接","离线"的时候动 ...
- Qt框架及模块认识
小白自工作就接触Qt,一直都在使用Qt5.3.1版本,所以没有经历过大牛们把项目从Qt4程序到Qt5的烦恼,没准以后会碰到.对Qt所有的丰富的API表示惊叹,对于Qt的框架及模块认识也是极为模糊的,文 ...
- pyqt-QGrapicsView 坐标系详解
PTQT——GraphicsView框架 转载 原网址 http://blog.51cto.com/9291927/1879128 一.GraphicsView框架简介 QT4.2开始引入了Graph ...
随机推荐
- 详解 CSS 属性 - :before && :after
现在我们经常在 html 源码中看到如下的写法: 这里的 ::after 和 ::before 就是我们今天来探讨的 css 伪元素之二 - :before && :after. 伪元 ...
- Java 第六天 Spring Annotation 和其它
Annotation,是Java语言中的一种特殊的元数据语法,Spring支持使用annotation来进行对象实例化和装配 使用Annotation在Spring的配置xml中添加context命名 ...
- USB设备---URB请求快
1.urb 结构体USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结构 ...
- iframe 父子窗口相互之间调用语法
一.父窗口调用iframe子窗口方法 1.HTML语法:<iframe name="myFrame" src="child.html"></i ...
- EXCLE使用宏生成目录
宏代码: Sub mu() Dim i As Integer Dim ShtCount As Integer Dim SelectionCell As Range ShtCount = Workshe ...
- Windows Phone 8.1SDK新特性预览
前言 Windows Phone 8.1的预览版将在近期推送,WP 8.1的SDK也已经进入到RC阶段,可以从这里安装.本次更新的SDK被直接集成到了VS2013Update2里面,不再是单独的 ...
- R Tools for Visual Studio
https://www.visualstudio.com/en-us/features/rtvs-vs.aspx https://www.microsoft.com/en-us/cloud-platf ...
- Spring原来属于这家公司
Spring几年前被VMware公司收购,如今Spring版权隶属于Pivotal.Pivotal ONE对Spring提供整合.Greenplum提供了大数据服务,GEMFIRE内存集群技术帮助12 ...
- IIS8 web.config 重定向之后 报错 500.19
原因是没有安装 URL Rewrite 官方下载地址:http://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads
- 005--VS C++ 加载位图
//全局变量 HDC mdc; //--------------------------------------------InitInstance() 函数--------------------- ...