QGraphicsView Class

目录

使用

构造函数

枚举

属性

属性方法

事件

信号


使用

头文件:#include <QGraphicsView>
配置:QT += widgets
初始版本:Qt 4.2
基类:QAbstractScrollArea

构造函数

QGraphicsView::QGraphicsView(QWidget *parent = nullptr);
QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr);

枚举

//当用户调整视图大小或转换视图时QGraphicsView可以使用的锚点
enum ViewportAnchor {
    NoAnchor,//没有锚点,即视图使场景的位置保持不变
    AnchorViewCenter,//视图中心的场景点用作锚点
    AnchorUnderMouse//鼠标下方的点用作锚点
};
//缓存模式
enum CacheModeFlag {
    CacheNone = 0x0,//所有绘画都直接在视口上完成
    CacheBackground = 0x1//后台被缓存
};
//在视口上按下并拖动鼠标时视图的默认操作
enum DragMode {
    NoDrag,//没发生什么事; 鼠标事件将被忽略
    ScrollHandDrag,//光标变为指点,然后拖动鼠标将滚动滚动条
    RubberBandDrag//出现橡皮筋。拖动鼠标将设置橡皮筋的几何形状,并选中橡皮筋覆盖的所有项目
};
//当场景内容更改或公开时QGraphicsView如何更新其视口
enum ViewportUpdateMode {
     FullViewportUpdate,//更新整个视口
     MinimalViewportUpdate,//确定需要重绘的最小视口区域
     SmartViewportUpdate,//过分析需要重绘的区域来尝试找到最佳的更新模式
     NoViewportUpdate,//视口中所有更改的边界矩形将被重绘
     BoundingRectViewportUpdate//永远不会更新其视
};
//呈现性能
enum OptimizationFlag {
     DontClipPainter = 0x1, // 此值已过时,并且无效
     DontSavePainterState = 0x2,//渲染背景或前景以及渲染每个项目时会保护画家状态
     DontAdjustForAntialiasing = 0x4,//禁用抗锯齿自动调整功能
     IndirectPainting = 0x8//仅用于与旧代码兼容
};

属性

//设置场景坐标或项目在视图中居中
void	centerOn(const QPointF &pos);
void	centerOn(qreal x, qreal y);
void	centerOn(const QGraphicsItem *item);
//确保场景坐标或项目在视图中可见
void	ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50);
void	ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50);
void	ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50);
//设置区域或项目在视图中显示
void	fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio);
void	fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio);
void	fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio);
//视图坐标转换为场景坐标
QPointF	mapToScene(const QPoint &point) const;
QPolygonF	mapToScene(const QRect &rect) const;
QPolygonF	mapToScene(const QPolygon &polygon) const;
QPainterPath	mapToScene(const QPainterPath &path) const;
QPointF	mapToScene(int x, int y) const;
QPolygonF	mapToScene(int x, int y, int w, int h) const;
//场景坐标转换回视图坐标
QPoint	mapFromScene(const QPointF &point) const;
QPolygon	mapFromScene(const QRectF &rect) const;
QPolygon	mapFromScene(const QPolygonF &polygon) const;
QPainterPath	mapFromScene(const QPainterPath &path) const;
QPoint	mapFromScene(qreal x, qreal y) const;
QPolygon	mapFromScene(qreal x, qreal y, qreal w, qreal h) const;

属性方法

//场景在视图中的对齐方式
Qt::Alignment	alignment() const;
void	setAlignment(Qt::Alignment alignment);
//背景画刷
QBrush	backgroundBrush() const;
void	setBackgroundBrush(const QBrush &brush);
//前景画刷
QBrush	foregroundBrush() const;
void	setForegroundBrush(const QBrush);
//缓存模式
QGraphicsView::CacheMode	cacheMode() const;
void	setCacheMode(QGraphicsView::CacheMode mode);
//拖拽模式
QGraphicsView::DragMode	dragMode() const;
void	setDragMode(QGraphicsView::DragMode mode);
//视图是否允许场景交互
bool	isInteractive() const
void	setInteractive(bool allowed)
//使能性能模式
void    setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true);
//QGraphicsView性能
QGraphicsView::OptimizationFlags	optimizationFlags() const;
void	setOptimizationFlags(QGraphicsView::OptimizationFlags flags);
//使能反走样模式
void    setRenderHint(QPainter::RenderHint hint, bool enabled = true);
//反走样模式
QPainter::RenderHints	renderHints() const;
void	setRenderHints(QPainter::RenderHints hints);
//调整视图大小时,视图定位场景的方式
QGraphicsView::ViewportAnchor	resizeAnchor() const;
void	setResizeAnchor(QGraphicsView::ViewportAnchor ancho);
//皮筋选中模式
Qt::ItemSelectionMode	rubberBandSelectionMode() const;
void	setRubberBandSelectionMode(Qt::ItemSelectionMode mode);
//当前场景
QGraphicsScene*    scene() const;
void    setScene(QGraphicsScene *scene);
//场景区域
qreal   width() const;
qreal   height() const;
QRectF	sceneRect() const
void	setSceneRect(const QRectF &rect)
void	setSceneRect(qreal x, qreal y, qreal w, qreal h)
//视图矩阵转换
QTransform    transform() const;
void setTransform(const QTransform &matrix, bool combine = false);
//视图转换,视图定位场景的方式
QGraphicsView::ViewportAnchor	transformationAnchor() const;
void	setTransformationAnchor(QGraphicsView::ViewportAnchor anchor);
//更新内容方式
QGraphicsView::ViewportUpdateMode	viewportUpdateMode() const;
void	setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode);

事件

//菜单事件
void	contextMenuEvent(QContextMenuEvent *event);
//拖拽事件
void	dragEnterEvent(QDragEnterEvent *event);
void	dragLeaveEvent(QDragLeaveEvent *event);
void	dragMoveEvent(QDragMoveEvent *event);
void	dropEvent(QDropEvent *event);
bool	event(QEvent *event) override
//焦点事件
void	focusInEvent(QFocusEvent *event);
bool	focusNextPrevChild(bool next);
void	focusOutEvent(QFocusEvent *event);
//输入事件
void	inputMethodEvent(QInputMethodEvent *event);
//键鼠事件
void	keyPressEvent(QKeyEvent *event);
void	keyReleaseEvent(QKeyEvent *event);
void	mouseDoubleClickEvent(QMouseEvent *event);
void	mouseMoveEvent(QMouseEvent *event);
void	mousePressEvent(QMouseEvent *event);
void	mouseReleaseEvent(QMouseEvent *event);
void	wheelEvent(QWheelEvent *event);
//绘制事件
void	paintEvent(QPaintEvent *event);
void	resizeEvent(QResizeEvent *event);
void	scrollContentsBy(int dx, int dy);
void	showEvent(QShowEvent *event);
bool	viewportEvent(QEvent *event);

信号

void	rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint);//橡皮筋变动时发出

//更新场景
void	invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers);
void	updateScene(const QList<QRectF> &rects);
void	updateSceneRect(const QRectF &rect);

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值