精华内容
下载资源
问答
  • QGraphics

    2015-12-24 09:22:00
    QGraphicsView和QGraphicsScene QGraphicsScene提供一个场景,可以添加各种item,QGraphicsView用于将元素显示,并支持旋转和缩放;可以将QGraphicsScene比作世界,QGraphicsView比作摄像机 基本用法: 将item...

    QGraphicsView和QGraphicsScene

    QGraphicsScene提供一个场景,可以添加各种item,QGraphicsView用于将元素显示,并支持旋转和缩放;可以将QGraphicsScene比作世界,QGraphicsView比作摄像机

    基本用法:

    将item加入scene后,通过setScene放入view查看

     1 #include <QApplication>
     2 #include <QtWidgets>
     3 #include <QGraphicsScene>
     4 #include <QGraphicsView>
     5 
     6 int main(int argc,char **argv)
     7 {
     8     QApplication app(argc,argv);
     9 
    10     QGraphicsScene *scene = new QGraphicsScene;
    11     QGraphicsView *view = new QGraphicsView;
    12 
    13     scene->addLine(0,0,150,150);
    14     view->setScene(scene);
    15     view->resize(500,500);
    16     view->show();
    17 
    18     return app.exec();
    19 }

     其他QGraphics封装的类

    1 #include <QGraphicsLineItem>
    2 #include <QGraphicsPixmapItem>
    3 #include <QGraphicsTextItem>
    4 #include <QGraphicsItemAnimation>   //动画
    5 #include <QTimeLine>

     例子:

     1 MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
     2 {
     3     QGraphicsLineItem* lineItem;
     4     QGraphicsTextItem* textItem;
     5     QGraphicsPixmapItem* pixmapItem;
     6 
     7 
     8     _view = new QGraphicsView(this);
     9 
    10     _view->setScene(_scene = new QGraphicsScene);
    11 
    12     _scene->addItem(lineItem = new QGraphicsLineItem(QLineF(QPointF(0, 0), QPointF(100, 100))));
    13     _scene->addItem(textItem = new QGraphicsTextItem("hello world"));
    14     _scene->addItem(pixmapItem = new QGraphicsPixmapItem(QPixmap("../1.jpg")));
    15     textItem->setFont(QFont("aaa", 50, 700, true));
    16     pixmapItem->setPos(200,200);
    17     
    18     //设置动画
    19     QGraphicsItemAnimation* animation = new QGraphicsItemAnimation;
    20     animation->setItem(pixmapItem);
    21     QTimeLine* timeline = new QTimeLine(3000);
    22     timeline->setLoopCount(2);  //次数
    23 
    24     animation->setTimeLine(timeline);
    25     animation->setTranslationAt(1,200,200);
    26     timeline->start();
    27 }

     

     1 //实现截屏
     2 void MyWidget::mousePressEvent(QMouseEvent *ev)
     3 {
     4     if( ev->button() == Qt::RightButton)
     5     {
     6         QPixmap pixmap(size()); //初始化画布大小为窗口大小
     7         QPainter painter(&pixmap);
     8         painter.fillRect(QRect(0,0,size().width(),size().height()),Qt::white);  //将画布置为白色,默认Pixmap是黑色
     9         _view->render(&painter);
    10         pixmap.save("../b.png");
    11     }
    12 }

    注意render的用法,一般窗口类都有,相当于渲染,从一个对象拷贝到另一个对象

     

    QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间;QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口。

    QPaintDevice可以理解成要在哪里去绘制,QPaintDevice有很多子类,比如QImage,以及QWidget,QPixmap,QBitmap

     

    转载于:https://www.cnblogs.com/raichen/p/5072015.html

    展开全文
  • 绘制或导入的QGraphicsItem可能会很大或很小,我们想要根据现实窗口的大小自适应显示item,基于个人对QGraphics Scene、Graphics Item、Graphics View关系[^1]的理解,发现一种方法使用可以解决需求。
  • Qt的QGraphics View Framework有三个基本构成元素——QGraphicsView、QGraphicsScene和QGraphicsItem,本文来讲讲这个QGraphicsItem,不过在学习它之前最好先搞清楚它们三者之间的关系,详情见视图框架组成成员的...

    Qt的QGraphics View Framework有三个基本构成元素——QGraphicsView、QGraphicsScene和QGraphicsItem,本文来讲讲这个QGraphicsItem,不过在学习它之前最好先搞清楚它们三者之间的关系,详情见视图框架组成成员的关系

    我们在了解它时从一下几个方面下手,分别是现有Item类、位置信息、转换、绘制

     

    现有item类

    这些都是Qt提供现有的item类,对绝大多数的需求实现了支持:

    QGraphicsEllipseItem——圆形类的元素(QGraphicsRectItem,这自然就是矩形类的元素)

    QGraphicsLineItem——线条类的元素

    QGraphicsPathItem——路径类的元素(注意:路径本身是不可见的)

    QGraphicsPixmapItem——图片类的元素

    QGraphicsPolygonItem——多边形类的元素

    QGraphicsSimpleTextItem——简单文本类的元素(如一段普通的文本)

    QGraphisTextItem——高级文本浏览类的元素(如带有样式的文本段落)

    对于基本操作而言这些足够了,如果要定义复杂的图形元素,则需要创建继承QGraphicsItem的子类,并且重写连个虚函数,分别是boundingRect()和paint(),主要是用来返回获取绘制的区域以及实现item的具体自绘。如下所示:
     

    class CustItem : public QGraphicsItem
    {
    public:
        QRectF boundingRect()
        {
            return QRectF(30, 30, 60, 60);
        }
    
        void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                     QWidget *widget)
        {
            painter->drawBoundedRect(20, 20, 80, 80);
        }
    };

    可别小瞧这个boundingRect(),它有诸多用途,其中QGraphisScene基于它对item创建索引,QGraphicsView用它来筛选有效的item,并且在一些碰撞检测上也会用到.并且由于QGraphicsScene期望item的绘制范围保持不变,所以如果要改变item的几何信息,一定要先调用item's geometry()通知QGraphicsScene更新到最新的索引.

    此外,对于碰撞检测有两种方式可以下手:

    1、重载shape()用于返回一个item的形状,并通过与默认的collidesWithItem()进行形状区域相交,但是如果item是复杂的形状,那么这样的做法开销会很大

    2、重载collidesWithItem() ,实现item的自定义碰撞检测机制

     

    位置信息

    所有的视图元素都是相互独立的,也就是说它们的位置信息都是基于自身的坐标系统,但是凡事有例外,那就是item的位置以及pos()是仅有不在自身坐标系统中的函数,这两个是相对于父类的坐标系统的,关于视图坐标系统的详细可以通过视图坐标系统简介了解。

    另外,一个item可以通过contains()来判断是否包含某个点,除此之外,任何一个item都可以包含一个或多个item。因为child item在它父亲的坐标系统中,所以parent item的行为会直接改变child items的属性

    转换

    QGraphicsItem除了基本的位置变换之外还支持映射转换。可以调用setRotation() or setScale()实现简单的转换,或者直接将转换矩阵传递给setTransform()。而对于那些复杂的转换,则可以传递多个组合转换调用setTransformations()实现。

    由于转换的过程是从parent到child的累积,所以如果同时对paren和child旋转90度,那么child实际上旋转了180度。同样如此,如果对parane缩放效果,也会施加到child相同效果。但是诸如效果并不会对item自身的geometry()产生影响,因为这些变换都是在自身的坐标系统中进行的。为了方便获取item的实际转换结果,QGraphicsItem还提供了诸如sceneTransform()的场景映射函数,目的就是为了获取在QGraphicsScene中坐标系统中的实际位置和转换效果

    需要我们注意的是:有些转换的结果会根据不同的动作顺序产生不同的结果。比如先缩放再旋转,与先旋转再缩放产生的效果是不同的。但是在QGraphicsItem上对于同一类动作的转换,这种顺序不会影响最终的结果,它总是以固定的顺序应用属性

    绘制

     

    展开全文
  • QPainterPath可以画出各种各样的图形,以下就是画OpenCV的findcontours的轮廓线。...from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene, QGraphicsView, QPushButton, QLabel, QDi
  • QGraphicsView

    2020-05-09 10:13:27
    如何设置QGraphicsItem线宽不随QGraphicsView缩放而变小或变大 https://www.cnblogs.com/LeorI/p/10032241.html

    如何设置QGraphicsItem线宽不随QGraphicsView缩放而变小或变大

    https://www.cnblogs.com/LeorI/p/10032241.html

     

    如何使QGraphicsItem不随QGraphicsView放大缩小而改变大小

    https://blog.csdn.net/goforwardtostep/article/details/76862952

     

    展开全文
  • QGraphicsItem

    千次阅读 2016-05-11 02:49:53
    enum QGraphicsItem::CacheMode QGraphicsItem::NoCache 禁用缓存 QGraphicsItem::ItemCoordinateCache 逻辑坐标缓存?逻辑缓存? QGraphicsItem::DeviceCoordinateCache 物理坐标缓存?物理缓存? enum ...

    Public Types

    enum QGraphicsItem::CacheMode

    QGraphicsItem::NoCache
    禁用缓存

    QGraphicsItem::ItemCoordinateCache

    缓存能够用于元素的逻辑坐标系统,QGraphicsItem用一个可配置的大小/解决方案建立了屏幕以外的像素缓冲区,追求质量会典型地降低,取决于缓冲的分辨率和元素变换,可以调用setCacheMode()再次调整缓存的分辨率


    QGraphicsItem::DeviceCoordinateCache
    缓存能够用于设备的逻辑坐标系统,这种模式可以移动元素,但不可以旋转,缩放或剪切,总是显示最好的画质


    enum QGraphicsItem::GraphicsItemChange

    QGraphicsItem::ItemEnabledChange
    项目启用状态更改,可以从itemChanged()返回新的状态

    QGraphicsItem::ItemEnabledHasChanged
    项目启用状态更改,itemChange将忽略该返回值

    QGraphicsItem::ItemMatrixChange
    项目矩阵旋转

    QGraphicsItem::ItemPositionChange
    项目位置变化,如果是ItemSendsGeometryChanges发送,可以调用pos()得到原来的位置,
    调用itemChange()后QGraphicsItem将会立即发送ItemPositionHasChanged,得到变化后的位置

    QGraphicsItem::ItemPositionHasChanged
    项目位置发生变化,pos()获得当前位置,QGraphicsItem忽略该消息的返回值

    QGraphicsItem::ItemTransformChange
    项目变换矩阵变化,如果是ItemSendsGeometryChanges发送,transform返回以前的矩阵,可以从ItemChange获得变换后的矩阵,如果更改了转换属性,该信号将不会发送

    QGraphicsItem::ItemTransformHasChanged
    项目变换矩阵变化,可能是setTransform或转换特性的改变,如果是ItemSendsGeometryChanges发送,transform和QGraphicsItem忽略该消息的返回值

    QGraphicsItem::ItemRotationChange
    项目旋转属性更改,如果是ItemSendsGeometryChanges发送,rotation返回以前的旋转,从itemChange得到新的矩阵

    QGraphicsItem::ItemRotationHasChanged
    项目旋转属性更改,如果是ItemSendsGeometryChanges发送,QGraphicsItem将忽略该消息的返回值

    QGraphicsItem::ItemScaleChange
    项目比例发生变化,scale获得以前的比例,itemChange返回当前尺寸

    QGraphicsItem::ItemScaleHasChanged
    项目比例发生变化,如果是ItemSendsGeometryChanges发送,QGraphicsItem将忽略该消息的返回值

    QGraphicsItem::ItemTransformOriginPointChange
    项目变换原点坐标改变,如果是ItemSendsGeometryChanges发送,transformOriginPoint获得以前的坐标,itemChange获得当前坐标

    QGraphicsItem::ItemTransformOriginPointHasChanged
    项目变换原点坐标改变,如果是ItemSendsGeometryChanges发送,QGraphicsItem将忽略该消息的返回值

    QGraphicsItem::ItemSelectedChange

    项目选定状态改变,如果该项目当前是选定的,它将会选择。 itemChange返回新的选中状态


    QGraphicsItem::ItemSelectedHasChanged
    项目选定状态改变,itemChange忽略返回值

    QGraphicsItem::ItemVisibleChange
    项目可见状态改变,itemChage返回新的可见状态


    QGraphicsItem::ItemVisibleHasChanged
    项目可见状态改变,itemChange忽略返回值


    QGraphicsItem::ItemParentChange
    项目父项改变,itemChage返回新的可见状态


    QGraphicsItem::ItemParentHasChanged
    项目父项改变,itemChange忽略返回值

    QGraphicsItem::ItemChildAddedChange
    添加了一个子项,返回值未使用,新的子项可能无法完全构造,纯虚函数会导致崩溃

    QGraphicsItem::ItemChildRemovedChange
    移除一个子项,返回值未使用

    QGraphicsItem::ItemSceneChange
    项目被移动到新的场景,当该项目被删除时scene是老场景或者一个空指针,itemChange返回新场景

    QGraphicsItem::ItemSceneHasChanged
    项目被移动到新的场景,返回值被忽略

    QGraphicsItem::ItemCursorChange
    项目光标改变,itemChange返回新光标

    QGraphicsItem::ItemCursorHasChanged
    项目光标改变,返回值被忽略

    QGraphicsItem::ItemToolTipChange
    项目提示改变,itemChange返回新提示

    QGraphicsItem::ItemToolTipHasChanged
    项目提示改变,返回值被忽略

    QGraphicsItem::ItemFlagsChange
    项目焦点改变,itemChange返回新焦点

    QGraphicsItem::ItemFlagsHaveChanged
    项目焦点改变,返回值被忽略

    QGraphicsItem::ItemZValueChange
    项目Z值改变,itemChange返回新Z值

    QGraphicsItem::ItemZValueHasChanged
    项目Z值改变,返回值被忽略

    QGraphicsItem::ItemOpacityChange
    项目透明度改变,itemChange返回透明度

    QGraphicsItem::ItemOpacityHasChanged
    项目透明度改变,返回值被忽略

    QGraphicsItem::ItemScenePositionHasChanged
    项目场景位置发生变化,如果是ItemSendsScenePositionChanges发出,QGraphicsItem忽略该消息的返回值



    enum QGraphicsItem::GraphicsItemFlag

    QGraphicsItem::ItemIsMovable
    项目可以通过点击和拖动移动(递归子项)

    QGraphicsItem::ItemIsSelectable
    项目可以通过点击,框选拖动或者在QGraphicsScene::setSelectionArea()调用所影响的区域内被选中

    QGraphicsItem::ItemIsFocusable
    项目支持键盘按下事件

    QGraphicsItem::ItemClipsToShape
    按自己的形状剪切,不管如何绘制,也不能接收在它形状之外的事件

    QGraphicsItem::ItemClipsChildrenToShape
    项目按照自己的形状剪切它的所有子项,【递归】

    QGraphicsItem::ItemIgnoresTransformations
    忽略应用到它的父项的变换(位置与父项关联)

    QGraphicsItem::ItemIgnoresParentOpacity
    忽略父项透明度

    QGraphicsItem::ItemDoesntPropagateOpacityToChildren
    透明度不影响子项

    QGraphicsItem::ItemStacksBehindParent
    堆叠到父项后面

    QGraphicsItem::ItemUsesExtendedStyleOption
    为项提供额外的QStyleOptionGraphicsItem属性

    QGraphicsItem::ItemHasNoContents
    项目不绘制任何内容

    QGraphicsItem::ItemSendsGeometryChanges
    项目位置或变换发生改变时调用itemChange

    QGraphicsItem::ItemAcceptsInputMethod
    项目接受输入法

    QGraphicsItem::ItemNegativeZStacksBehindParent
    如果Z值是负的,自动放在父项后方

    QGraphicsItem::ItemIsPanel
    该项目是一个面板,提供了激活和焦点处理,只有一个面板可以处于活动状态

    QGraphicsItem::ItemSendsScenePositionChanges
    项目在位置变化发生时调用itemChange()

    QGraphicsItem::ItemContainsChildrenInShape
    显示所有项目的直接或间接的子项只在项目的形状中绘制,默认情况下禁用


    enum QGraphicsItem::PanelModality


    QGraphicsItem::NonModal
    该面板是不是模态,并不会阻止输入到其他面板。这是面板的默认值。

    QGraphicsItem::PanelModal
    面板模型?

    QGraphicsItem::SceneModal

    窗口是模态的,整个场景和块输入到所有面板。


    public Functions


    boundingRect() const = 0

    这是个纯虚函数,定义了边界矩形尺寸


    paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR) = 0
    这是个纯虚函数,指定了在边界矩形内如何绘画

    class SimpleItem : public QGraphicsItem
    {
    public:
        QRectF boundingRect() const
        {
            qreal penWidth = 1;
            return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
                          20 + penWidth, 20 + penWidth);
        }
        
        void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                   QWidget *widget)
        {
            painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
        }
    };

    boundingRegion(const QTransform &itemToDeviceTransform) const
    返回该item的轮廓区域,返回的区域的坐标系统依赖于参数itemToDeviceTransform
    如果你传递一个Qtransform对象作为参数,那么函数将返回本地坐标系统区域
    返回的区域是item内容可见的一个大概的轮廓,尽管计算起来很浪费空间和时间
    但是比boundingRect()更精准,而且当重绘时候,它还能避免不必要的重绘
    对像线或者简单的多边形来说非常有效

    childItems() const
    返回孩子item的一个链表,这些items按照栈顺序排列,考虑了item的插入顺序和Z-values

    childrenBoundingRect() const
    返回这个item的所有子孙items的本地坐标系统轮廓矩形。这个矩形包括了这个item所有的子孙item,如果这个item不含有子孙item,这个函数将返回一个空的矩形。

    clearFocus()
    去除item的光标,如果原来有光标焦点,当焦点失去时候,事件focus out event会发送给这个item,提示他将会失去焦点。

    clipPath() const
    返回此项目的裁剪路径

    collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
    如果这个item和另一个item碰撞就返回真,mode是应用于其他item的,默认是Qt::IntersectsItemShape,如果其他的item和这个item相互影响或者包含,被包含于这个item的形状(详见Qt::ItemSelectionMode)
    默认的函数是基于外形相互影响,它调用两个item的shape()函数,这将会花费很大时间,你可以在QgraphicsItem子类中重写这个函数,提供一个简单的算法。这样你可以使用自己item的一些参数,这样可以提高碰撞侦测的效果。例如,两个完全没有转换的圆item的碰撞可以通过对比他们的圆心位置和半径

    collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
    如果item按照path碰撞就返回真

    collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
    返回碰撞列表,碰撞模式取决于mode

    commonAncestorItem(const QGraphicsItem *other) const
    返回item最近的祖先item,如果other为0,或者没有祖先item,就返回0

    contains(const QPointF &point) const
    如果item包含了点point就返回TRUE,否则返回FALSE,最常用的是在QgraphicsView中调用,来判断这个item是否在光标下面,如果要重写这个函数,那就尽可能的简单。默认的这个函数调用的shape()函数

    deviceTransform(const QTransform &viewportTransform) const
    返回item设备的转换矩阵,使用viewportTransform来从场景到设备影射坐标,这个矩阵可以用来从这个item本地坐标到视图口坐标系统映射坐标或者几何图形,如果要映射视图口坐标到本地坐标,首先应该转换返回的这个矩阵。

    effectiveOpacity() const
    返回item的有效透明度,这个数值在0.0~~1.0之间

    ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)
    如果项目是场景,项目将会检查鼠标是否处在可见区域的外面并且根据检查的结果移动滚动文本区域

    focusItem() const
    如果子项具有获得焦点,将返回该项指针,否则返回0

    grabKeyboard()
    项目接收键盘事件,直到该项目不可见,从场景移除或删除该项

    grabMouse()
    项目接收鼠标事件,直到该项目不可见,从场景移除或删除该项

    hasCursor() const
    如果该项有一个光标设置返回真,否则为假,默认为假,cursor()返回标准的箭头光标

    hasFocus() const
    项目是活动的,返回真,否则为假

    hide()
    隐藏项目

    installSceneEventFilter(QGraphicsItem *filterItem)
    安装场景事件过滤器

    isAncestorOf(const QGraphicsItem *child) const
    如果项目有子项,返回真

    isBlockedByModalPanel(QGraphicsItem **blockingPanel = Q_NULLPTR) const
    如果项目被模态窗口阻挡,返回真

    isClipped() const
    如果项目被裁剪,返回真

    isObscured(const QRectF &rect = QRectF()) const
    如果被任何碰撞项上面的不透明的形状完全遮蔽该项,返回true

    isObscuredBy(const QGraphicsItem *item) const
    如果这个项目的包围矩形被项目的不透明的形状完全遮蔽,返回true

    isPanel() const
    如果项目是一个面板,返回真

    isUnderMouse() const
    如果光标在项目上,返回真

    isVisibleTo(const QGraphicsItem *parent) const
    如果项目是可见的,返回真

    isWidget() const
    如果项目是控件,返回真

    isWindow() const
    如果项目是QGraphicsWidget,返回真

    itemTransform(const QGraphicsItem *other, bool *ok = Q_NULLPTR) const
    返回QTarnsForm式地图坐标

    mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
    项目坐标转换,返回映射的坐标,如果item是0,那么返回和mapFromScene()一样

    mapFromParent(qreal x, qreal y, qreal w, qreal h) const
    这是个父坐标系统转换,返回映射的坐标

    mapFromScene(qreal x, qreal y, qreal w, qreal h) const
    转换为场景坐标系统,返回映射的坐标

    mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
    转换为项目矩形坐标,返回映射的矩形

    mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
    转换为父项目坐标系统,返回映射的矩形

    mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
    转换为场景坐标,返回映射的矩形

    mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
    转换为项目矩形坐标,返回映射的矩形,如果项目是0,这个函数返回的是mapFromScene()相同

    mapRectToParent(qreal x, qreal y, qreal w, qreal h) const
    转换为父项目坐标系统,返回映射的矩形

    mapRectToScene(qreal x, qreal y, qreal w, qreal h) const
    转换为场景坐标,返回映射的矩形

    mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
    转换为项目坐标,返回映射的坐标

    mapToParent(qreal x, qreal y, qreal w, qreal h) const
    转换为父项坐标,返回映射的坐标

    mapToScene(qreal x, qreal y, qreal w, qreal h) const
    转换为场景坐标,返回映射的坐标

    moveBy(qreal dx, qreal dy)
    相对移动

    opaqueArea() const
    返回不透明形状区域,默认将返回一个空QPainterPath

    panel() const
    如果该项是面板,返回自身,否则如果父项是面板将返回父项,否则返回0

    parentObject() const
    如果父项不是QGraphicsObject,返回0,否则返回父项

    parentWidget() const
    返回父项控件

    removeSceneEventFilter(QGraphicsItem *filterItem)
    移除场景事件过滤器

    resetTransform()
    重置变换矩阵

    rotation() const
    返回顺时针旋转角度

    scene() const
    返回项目的当前场景

    sceneBoundingRect() const
    返回项目的场景的矩形

    scenePos() const
    返回项目在场景的位置

    sceneTransform() const
    返回这个项目的场景转换矩阵

    scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
    滚动项目,滚动比重绘快

    setAcceptDrops(bool on)
    设置接受拖放

    setAcceptHoverEvents(bool enabled)
    设置接受悬停事件

    setAcceptTouchEvents(bool enabled)
    设置接受触摸事件

    setAcceptedMouseButtons(Qt::MouseButtons buttons)
    设置该项目接受鼠标事件的鼠标按钮

    setActive(bool active)
    设置项目是否活动

    setBoundingRegionGranularity(qreal granularity)
    调节轮廓区域的粒度,默认的粒度是0,这时候item的区域和轮廓矩形一样的

    setCacheMode(CacheMode mode, const QSize &logicalCacheSize = QSize())
    设置缓存模式

    setCursor(const QCursor &cursor)
    设置光标形状

    setData(int key, const QVariant &value)
    设置自定义数据

    setEnabled(bool enabled)
    设置启用项目

    setFiltersChildEvents(bool enabled)
    设置过滤子项事件

    setFlag(GraphicsItemFlag flag, bool enabled = true)
    设置标志

    setFlags(GraphicsItemFlags flags)
    设置所有标志

    setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
    设置焦点

    setFocusProxy(QGraphicsItem *item)
    将该项目设置为焦点代理

    setGraphicsEffect(QGraphicsEffect *effect)
    设置效果

    setGroup(QGraphicsItemGroup *group)
    设置项目组

    setInputMethodHints(Qt::InputMethodHints hints)
    设置此项当前输入方法提示

    setOpacity(qreal opacity)
    设置不透明度

    setPanelModality(PanelModality panelModality)
    设置面板模式

    setParentItem(QGraphicsItem *newParent)
    设置父项

    setPos(const QPointF &pos)
    设置位置

    setRotation(qreal angle)
    设置旋转角度

    setScale(qreal factor)
    设置场景

    setSelected(bool selected)
    设置选择

    setToolTip(const QString &toolTip)
    设置提示

    setTransform(const QTransform &matrix, bool combine = false)
    设置变换

    setTransformOriginPoint(qreal x, qreal y)
    设置变换原点

    setTransformations(const QList<QGraphicsTransform *> &transformations)
    设置旋转列表

    setVisible(bool visible)
    设置可见

    setX(qreal x)
    setY(qreal y)
    设置坐标

    setZValue(qreal z)
    设置Z值

    shape() const
    返回形状,用于碰撞检测,命中测试等,默认返回矩形

    show()
    显示

    stackBefore(const QGraphicsItem *sibling)
    堆叠兄弟项目,项目必须是兄弟项

    toGraphicsObject() const
    返回转换为QGraphicsObject,如果本来是图像对象,返回0


    topLevelItem() const
    返回顶级项目,如果没有父项,返回自己

    topLevelWidget() const
    返回一个指向该项目的顶级控件,如果祖先不是控件,返回0,如果没有顶级控件,返回自己

    type() const
    返回类型

    ungrabKeyboard()
    释放键盘事件

    ungrabMouse()
    释放鼠标事件

    unsetCursor()
    从项目中清楚光标

    update(const QRectF &rect = QRectF())
    更新

    window() const
    返回项目的窗口,或0


    Static Public Members

    Type
    重载设置项目类型

    UserType

    最低项目类型值


    Protected Functions


    contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
    上下文菜单事件

    dragEnterEvent(QGraphicsSceneDragDropEvent *event)
    拖拽输入事件

    dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
    拖拽离开事件


    dragMoveEvent(QGraphicsSceneDragDropEvent *event)
    拖拽移动事件

    dropEvent(QGraphicsSceneDragDropEvent *event)
    拖拽事件

    focusInEvent(QFocusEvent *event)
    焦点事件

    focusOutEvent(QFocusEvent *event)
    取消焦点事件

    hoverEnterEvent(QGraphicsSceneHoverEvent *event)
    悬停进入事件

    hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
    悬停离开事件

    hoverMoveEvent(QGraphicsSceneHoverEvent *event)
    悬停移动事件

    inputMethodEvent(QInputMethodEvent *event)
    输入法事件

    inputMethodQuery(Qt::InputMethodQuery query) const
    输入法查询事件

    itemChange(GraphicsItemChange change, const QVariant &value)
    项目改变

    keyPressEvent(QKeyEvent *event)
    按下按键

    keyReleaseEvent(QKeyEvent *event)
    释放按键

    mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
    双击事件

    mouseMoveEvent(QGraphicsSceneMouseEvent *event)
    鼠标移动事件


    mousePressEvent(QGraphicsSceneMouseEvent *event)
    鼠标单击事件


    mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
    鼠标是否事件

    prepareGeometryChange()
    改变包围矩形

    sceneEvent(QEvent *event)
    场景事件

    sceneEventFilter(QGraphicsItem *watched, QEvent *event)
    场景事件过滤

    updateMicroFocus()
    焦点更新

    wheelEvent(QGraphicsSceneWheelEvent *event)
    滚轮事件

    qgraphicsitem_cast(QGraphicsItem *item)
    返回给定项目类型





    英语渣渣必有错误,如有发现,欢迎留言

    展开全文
  • QGraphicsView Draw

    2018-10-12 15:21:09
    基于QT QGraphicsView Framework的绘图软件,可以绘制常见的直线、矩形、圆、椭圆等图形,可以实现图形的交互如碰撞检测、控制手柄拖动缩放、撤销重做等。还有属性树的用法
  • QGraphicsView中的QGraphicsItem鼠标拖动方法1:方法2: 方法1: QGraphicsScene scene; QGraphicsTextItem *text = scene.addText("Hello, world!"); //接受鼠标拖动 text->setAcceptHoverEvents(true); ...
  • QGraphicsView Class

    2021-01-22 15:26:13
    目录 使用 构造函数 枚举 属性 属性方法 事件 信号 槽 使用 头文件: ...QGraphicsView>...QGraphicsView::QGraphicsView(QWidget *parent = nullptr);...QGraphicsView::QGraphicsView(QGraphics
  • gif录制软件没有录到鼠标方法1:通过设置QGraphicsTextItem的属性实现(推荐)QGraphicsScene scene; QGraphicsTextItem *text = scene.addText("Hello, world!"); //接受鼠标拖动 text->...setFlags(QGraphics...
  • 参考:Qt4 开发实践第八章 图形视图QGraphicsView #ifndef DRIVEDGRAPH_H #define DRIVEDGRAPH_H #include <QObject> #include <QGraphicsItem> #include <QGraphicsScene> #include ...
  • 简述:QGraphicsItem 是场景中 item 的基类。图形视图提供了一些典型形状的标准 item,例如:矩形 ( QGraphicsRectItem )、椭圆 ( QGraphicsEllipseItem ) 、文本项 ( QGraphicsTextItem )。当这些不满足需求时(例如...
  • QGraphicsView画折线图Qt计算线段交点QGraphicsItem得简单使用
  • Qt绘图 QGraphicsView

    2017-07-06 19:16:13
    使用 QGraphicsView、QGraphicsScene、QGraphicsItem进行简单的缩放,移动,旋转
  • 自定义 QGraphicsItem

    万次阅读 多人点赞 2016-11-11 19:53:38
    QGraphicsItem 是场景中 item 的基类。图形视图提供了一些典型形状的标准 item,例如:矩形 ( QGraphicsRectItem )、椭圆 ( QGraphicsEllipseItem ) 、文本项 ( QGraphicsTextItem )。当这些不满足需求时(例如:在...
  • QGraphicsItem的缩放

    2017-09-21 21:22:05
    通过重新实现QGraphicsItem的鼠标事件,使QGraphicsItem可以通过鼠标进行缩放。可能运行时偶尔会出现问题,但是缩放功能是正确的。
  • Qt绘图中,QGraphicsView、QGraphicsScene、QGraphicsItem三者之间密不可分,以下简单介绍三者之间关系。 三者之间关系: 如同绘画的过程,Qt绘图中,QGraphicsView的作用相当于画板,QGraphicsScene等效于画布,...
  • QGraphicsItem - QGraphicsScene - QGraphicsView

    千次阅读 2017-09-03 10:54:43
    1.QGraphicsItem -- 是个基类 class Q_WIDGETS_EXPORT QGraphicsItem { public: enum GraphicsItemFlag { ItemIsMovable = 0x1, ItemIsSelectable = 0x2, ItemIsFocusable = 0x4,
  • QGraphicsView_Demo.txt

    2020-03-31 18:21:26
    重写QGraphicsView,实现缩放,平移功能,平移时会同步QGraphicsView滚动条位置,这样不会导致移动以后和QGraphicsView的滚动条不匹配。
  • QGraphicsItem的鼠标事

    2020-12-02 22:51:02
    通过重新实现QGraphicsItem的鼠标事件,使QGraphicsItem可以通过鼠标进行缩放。可能运行时偶尔会出现问题,但是缩放功能是正确的。
  • 自定义QGraphicsItem

    2020-06-14 16:38:29
    文章目录前言:简述自定义 QGraphicsItemBoundingRect() ...继承 QGraphicsItem,自定义item。 自定义 QGraphicsItem 要实现自定义 item,需要覆盖 QGraphicsItem 的两个纯虚函数: void paint() QRectF boundingRect()
  • QGraphics坐标

    2017-06-22 22:53:15
    Qt中QGraphics类坐标映射关系详解(有图有真相,实例讲解) 2016-03-25 12:15 1502人阅读 评论(0) 收藏 举报  分类: QT/视图图形(17)  如果你英文足够好,可以参考Qt帮助文档中的:...
  • QGraphicsItem 分组

    千次阅读 2016-12-07 21:22:08
    QGraphicsItem 支持很多特性,例如:鼠标、键盘事件、拖放、分组、碰撞检测等。通常在演示工具中使用分组,当用户想要将多个较小的 items 组合成一个大的 item 时,以简化 items 的移动和复制。
  • 在使用QGraphicsView过程中,有时候我们需要对view进行缩放,但是对于一般正常的加入view中的item都会随着view的大小变化而变化,但是如果我们想让某些item不随view的缩放进行改变怎么办呢?详情见博客:...
  • 常见的 QGraphicsItem

    万次阅读 多人点赞 2016-11-07 19:47:51
    简述QGraphicsItem 类是 QGraphicsScene 中所有 item(图元)的基类。它提供了一个轻量级的基础,用于编写自己的自定义 item。其中包括:定义 item 的几何形状、碰撞检测、绘制实现、以及通过其事件处理程序进行 ...
  • 视图QGraphicsView QGraphicsView提供视图部件,可视化场景中的内容。坐标系是左上角为原点(0,0)。 场景QGraphicsScene 可以看成是QGraphicsItem的容器。注意设置QGraphicsScene的大小。否则在进行坐标转换的...
  • QGraphicsView和QGraphicsItem修改鼠标的光标形状,都可以使用this-&gt;setCursor()函数进行设置 区别在于,QGraphicsItem中的this表示item,QGraphicsView 的this表示view 在我进行对QGraphicsItem进行封装的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,696
精华内容 678
关键字:

qgraphics