QT笔记
1.QGraphicsItem -- 是个基类
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()函数使图形项可以接收悬停事件。
推荐阅读
-
opencv进阶学习笔记10:图像金字塔和图像梯度
-
Android Studio笔记之webview ——实现app本身打开网页而不跳转到其他浏览器(内置浏览器)
-
【CSS笔记十】CSS样式设置小技巧
-
《移山之道:VSTS软件开发指南》读书笔记
-
Python学习笔记(10)-Python进阶10-字典与集合
-
软件性能测试、分析与调优实践之路_读书笔记(六)
-
Javascript学习笔记二 之 变量_基础知识
-
Web前端新人笔记之height、min-height的区别_html/css_WEB-ITnose
-
php学习笔记 面向对象中[接口]与[多态性]的应用
-
php SQLite学习笔记与常见问题分析第1/2页_php技巧