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的更多相关文章

  1. 杂烩:QWidget、QGraphics、QtQuick

    一说起Qt 大都会想起Qt的GUI编程,具体到某个类的话,最多的就是QWidget类及其子类了. 其实Qt中还有基于项的图形视图,具体来说QGraphicsView,QGraphicsScene,QG ...

  2. Qt编程之在QGraphics scene中使用图片

    http://stackoverflow.com/questions/5960074/qimage-in-a-qgraphics-scene http://stackoverflow.com/ques ...

  3. Qt中QGraphics类坐标映射关系详解

    1.Item(图元)坐标:属于局部坐标,通常以图元中心为原点(中心对称),非中心对称类,比如dialog类,一般以左上角为原点,正方向x朝右,y朝下. 2.setPos的坐标是父类坐标系的坐标,一般对 ...

  4. Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解

    Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放.这个柜架也包 ...

  5. Qt中绘图坐标QPainter,Viewport与Window的关系

    在Qt中常常要自己重载一些paintEvent函数,这个时候往往忽略了两个很关键的API,那就是setViewport和setWindow. Viewport,顾名思义,反应的是物理坐标,就是你实际想 ...

  6. 玩玩Qt(一)

    最近在看一些关于游戏引擎的东西,本来是有几个游戏的小点子,其实实现起来还挺麻烦的,想找个游戏引擎看看能不能码起来.辗转之后发现了很多2D引擎,其中国产的要数cocos2dx用的好像是比较广泛,但是好多 ...

  7. pyqt5 动画在QThread线程中无法运行问题

    自己做了一个tcp工具,在学习动画的时候踩了坑,需求是根据上线变绿色,离线变灰色,如果连接断开了,则变为灰色 问题现象: 可以看到点击"连接","离线"的时候动 ...

  8. Qt框架及模块认识

    小白自工作就接触Qt,一直都在使用Qt5.3.1版本,所以没有经历过大牛们把项目从Qt4程序到Qt5的烦恼,没准以后会碰到.对Qt所有的丰富的API表示惊叹,对于Qt的框架及模块认识也是极为模糊的,文 ...

  9. pyqt-QGrapicsView 坐标系详解

    PTQT——GraphicsView框架 转载 原网址 http://blog.51cto.com/9291927/1879128 一.GraphicsView框架简介 QT4.2开始引入了Graph ...

随机推荐

  1. php实现显示网站运行时间-秒转换年月日时分秒

    <?php // 设置时区 date_default_timezone_set('Asia/Shanghai'); /** * 秒转时间,格式 年 月 日 时 分 秒 * * @author w ...

  2. 往Android SDCard中读写入数据

    一.用Environment (写) 1.API获取sdcard的路径 File path=Environment.getExternalStorageDirectory(); path=new Fi ...

  3. i++与++i的误解

    javap -c xx.class {i=0i=i++}0: bipush 02: istore_1 stack ->var13: iload_1 var1->stack4: iinc 1 ...

  4. java 网页页面抓取标题和正文

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  5. poj 2507Crossed ladders <计算几何>

    链接:http://poj.org/problem?id=2507 题意:哪个直角三角形,一直角边重合, 斜边分别为 X, Y, 两斜边交点高为 C , 求重合的直角边长度~ 思路: 设两个三角形不重 ...

  6. hdu 5443 The Water Problem

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Description In Land waterless, ...

  7. Bing Speech Recognition 标记

    Bing Speech Services Bing   Bing Speech Services provide speech capabilities for Windows and Windows ...

  8. ios中如何计算(页数,行数,等等的算法)

    页数 = (总个数 + 每页最大显示个数 - 1) / 每页显示最大的个数

  9. df du

    df命令详细用法 a:显示全部的档案系统和各分割区的磁盘使用情形 i:显示i -nodes的使用量 k:大小用k来表示 (默认值) t:显示某一个档案系统的所有分割区磁盘使用量 x:显示不是某一个档案 ...

  10. 基于perl的网络爬虫

    use Mojo::UserAgent; use Bloom::Filter; use Smart::Comments; use DBI; my $dbname = "bbs_url&quo ...