Qt Graphics View Framework(1)---简单使用
来源:互联网 发布:商机通 软件下载 编辑:程序博客网 时间:2024/05/16 17:50
简介
本次主要涉及一下3个类
1. QGraphicsView:显示图形的窗口。
2. QGraphicsScene:用于绘制的画布,一切的绘制和时间都发生在画布上,QGraphicsView用于展示QGraphicsScene,如果画布大于QGraphicsView的尺寸,窗口会自动创建滚动条。
3. QGraphicsItem:在QGraphicsScene上展示的item。QGraphicsScene使用一个BSP(二进制空间分区Binary Space Partitioning)树来提供快速的项发现,正因为如此,它可以使巨大的场景实时地可视化,即便它有上百万个项(item)。
使用QGraphicsView来绘制一个长方体
首先我们来写一个QGraphicsItem的子类来作为我们的长方体。
子类主要重写一下三个函数:
1. QRectF boundingRect()const
定义项目的外形,QGraphicsView使用它来决定重绘的范围 ,所以你可以在这个范围外搞事情,但搞完后QGraphicsView不会帮忙擦屁股。
2. void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
绘图事件,类似于paintEvent。
3. QPainterPath shape()const
表明item的形状主要用于碰撞检测,命中测试等等。
这里函数比较少就这样写了,希望不影响可读性。
class MyItem : public QGraphicsItem{public: MyItem(QRect rect) { m_rect = rect; } QRectF boundingRect()const { return m_rect; } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(option);// Q_UNUSED(widget);//取消警告,看着心烦 painter->drawRect(QRect(m_rect.x(),m_rect.y(),m_rect.width(),m_rect.height())); } QPainterPath shape()const { QPainterPath path; path.addRect(m_rect); return path; }private: QRect m_rect;};
之后建立窗口,设置画布:
QGraphicsScene scene;scene.setSceneRect(-300,-300,600,600);//为了让原点在画布中心QGraphicsView view(&scene);view.setGeometry(200,200,400,400);MyItem *item = new MyItem(QRect(0,0,200,200));//基于画布的坐标scene.addItem(item);//往“画布”上绘制MyItemitem->setPos(0,0);view.show();
这样就完成了长方形的绘制。
其他
感觉第一篇毛都没讲啊,坐标这一块准备放到第二篇,再介绍一点帅气的功能把:
选中
在构造函数中添加
setFlags(ItemIsSelectable);
在paint中添加
if(option->state & QStyle::State_Selected) { painter->setPen(QPen(Qt::red,2,Qt::DotLine)); painter->drawRect(m_rect); }
现在我们的item会对选中做出响应。
拖动
继续添加标记。(可以在帮助文档中看到其他标记)
setFlags(ItemIsSelectable | ItemIsMovable);
就可以让我们拖着item到处动了。
缩放,旋转
- 缩放
使用QGraphicsView的scale方法进行缩放。例如
view.scale(2,4);
- 旋转
使用QGraphicsView的rotate方法进行缩放。例如
view.rotate(30);
- Qt Graphics View Framework(1)---简单使用
- Qt Graphics View Framework
- Qt Graphics View Framework
- Qt Graphics View Framework
- Java平台下使用QT的The Graphics View Framework
- Qt之使用Graphics View Framework开发拼图游戏
- QT 绘图设备和Graphics View Framework
- Qt Graphics View Framework 图形视图框架
- Qt Graphics View Framework绘制直线
- Qt Graphics View FrameWork图形视图框架
- QT 绘图设备和Graphics View Framework
- Qt Graphics View Framework 图形视图框架
- QT 绘图设备和Graphics View Framework
- Qt Graphics View Framework(2)---坐标系
- Qt之Graphics View Framework详解
- QT图形视图框架(The Graphics View Framework in QT)
- Qt图片浏览器 --基于Qt的Graphics View Framework
- Qt Graphics View 学习 1
- codeforces round 360 div2 E The Values You Can Make Dp
- 2016ZSTU新生赛个人题解 【未完待续。。】
- 2-路归并
- JDBC各种数据库连接URL关键代码
- webpack入门(一)——webpack 介绍
- Qt Graphics View Framework(1)---简单使用
- win10最详细的优化设置完美解决磁盘100%占用
- IntelliJ IDEA 使用心得与常用快捷键
- Solr-4.7.1.jar包的目录结构
- 关于有符号数与无符号数的建议
- 文件目录分析及文件管理命令
- 《算法》第四版学习环境配置
- 如何写一个混淆配置文件
- mysql