欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QT笔记

程序员文章站 2024-01-03 10:12:58
...

1.QGraphicsItem -- 是个基类

QT笔记

 

2.QGraphicsScene

class QGraphicsScene : public QObject

 

3.QGraphicsView 

class QGraphicsView : public QAbstractScrollArea
class QAbstractScrollArea : public QFrame
class QFrame : public QWidget
class QWidget : public QObject, public QPaintDevice

 

4.QGraphicsItem

QGraphicsItem的paint()函数被QgrapicsView类调用来绘制图元的内容

 

5. QGraphicsItem 

 QVariant itemChange(GraphicsItemChange change, const QVariant & value)

 

 itemChange函数被QGraphicsItem调用用来标识图元的状态改变了,通过重载itemChange函数,可以对自己定义事件响应。

 

6.

 

在QGraphicView中提供了三种拖拽模式,分别是:

    QGraphicsView::NoDrag :忽略鼠标事件,不可以拖动。

    QGraphicsView::ScrollHandDrag :光标变为手型,可以拖动场景进行移动。

    QGraphicsView::RubberBandDrag :使用橡皮筋效果,进行区域选择,可以选中一个区域内的所有图元。

 

7.QGraphicsProxyWidget
 widget代理,用于将一个QWidget对象嵌入一个QGraphicsScene中

 

 

Example:

 
  int main(int argc, char **argv)
  {
      QApplication app(argc, argv);
 
      QTabWidget *tabWidget = new QTabWidget;
 
      QGraphicsScene scene;
      QGraphicsProxyWidget *proxy = scene.addWidget(tabWidget);
 
      QGraphicsView view(&scene);
      view.show();
 
      return app.exec();
  }


 

 

 

8.事件传递

view-->scene->item

GraphicsView支持事件传播体系结构,可以使图元在场景scene中得到提高了已被的精确交互能力。图形视图框架中的事件都是首先由视图进行接收,然后传递给场景,再由场景给相应的图形项。
       对于键盘鼠标事件,scene会传递给获得焦点的图形项。如果场景没有获得焦点,那键盘事件会丢弃;如果调用场景setFocus()或者场景中的一个图形项获得了焦点,那么场景会自动获得焦点;如果场景丢失了焦点(如调用clearFocus())而其中一个图形项获得焦点那场景会保存这个图形项的焦点信息。
       图形项默认无法接收悬停事件,可以使用QGraphicsItem的setAcceptHoverEvents()函数使图形项可以接收悬停事件。 
 

 

 

 

 

 

上一篇:

下一篇: