目录

官方解析

博主小栗子


官方解析

QGraphicsItem events

QGraphcisItem通过QGraphicsScene的sceneEvent()这个虚函数来获取事件。这个虚函数把最常见的事件分配给事件处理程序:
1.contextMenuEvent()处理上下文菜单事件;
2.focusInEvent()和focusOutEvent()处理是否聚焦的事件;
3.hoverEnterEvent(),hoverMoveEvent()以及hoverLeaveEvent()处理鼠标悬浮进入、移动以及离开事件;
4.inputMethodEvent()掌握input事件,用于支持可访问性;
5.keyPressEvent()与keyReleaseEvent()处理键盘按压事件;
6.mousePressEvent(),mouseMoveEvent(),mouseReleaseEvent()以及mouseDoubleClickEvent()处理鼠标按下,移动,释放点击,双击;
可以使用事件过滤对任一item进行时间过滤。这个过滤与Qt的常规事件过滤不同(QObject::installEventFilter()),常规的事件过滤只作用于QObject的派生类。调用installSceneEventFilter()可以为任意的item添加事件过滤,当给某个item设置了事件过滤后,这个过滤事件就能被sceneEventFilter()这个虚函数接收。通过调用removeSceneEventFilter()可以移除事件过滤。

博主小栗子

运行截图如下:

源码如下:

mygraphicsitem.h

#ifndef MYGRAPHICSITEM_H
#define MYGRAPHICSITEM_H#include <QGraphicsItem>class MyGraphicsItem:public QGraphicsItem
{
public:MyGraphicsItem();void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);QRectF boundingRect() const;protected:void keyPressEvent(QKeyEvent *event);};#endif // MYGRAPHICSITEM_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
class QGraphicsScene;
QT_END_NAMESPACEnamespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;QGraphicsScene *m_scene;
};#endif // WIDGET_H

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

mygraphicsitem.cpp

#include "mygraphicsitem.h"
#include <QPainter>
#include <QKeyEvent>
#include <QDebug>MyGraphicsItem::MyGraphicsItem()
{setFocus();setFlags(QGraphicsItem::ItemIsFocusable|QGraphicsItem::ItemIsMovable);
}void MyGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{painter->save();painter->setPen(QPen(Qt::red,4));painter->drawRect(0,0,50,50);painter->restore();
}QRectF MyGraphicsItem::boundingRect() const
{return QRectF(0,0,50,50);
}void MyGraphicsItem::keyPressEvent(QKeyEvent *event)
{event->accept();if(event->key()==Qt::Key_Down)moveBy(0,10);else if(event->key()==Qt::Key_Left)moveBy(-10,0);else if(event->key()==Qt::Key_Right)moveBy(10,0);else if(event->key()==Qt::Key_Up)moveBy(0,-10);
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "mygraphicsitem.h"#include <QGraphicsScene>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);m_scene=new QGraphicsScene;ui->graphicsView->setScene(m_scene);MyGraphicsItem *item=new MyGraphicsItem;m_scene->addItem(item);
}Widget::~Widget()
{delete ui;
}

Qt文档阅读笔记-QGraphicsItem events解析与实例相关推荐

  1. Qt文档阅读笔记-QSet官方解析及实例

    目录 官方解析 博主栗子 官方解析 QSet类是一个模板类,他是一个哈希表集合. QSet<T>是Qt的一个普通容器类.QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能 ...

  2. Qt文档阅读笔记-QSslConfiguration官方解析与实例

    目录 官网解析 博主例子 官网解析 QSslConfiguration用于SSL连接的配置. QSslConfiguration是Qt networking下的一个类,这个类主要用于打开SSL连接,以 ...

  3. Qt文档阅读笔记-QtWebApp官方解析与实例(使用QtWebApp搭建HTTP服务器)

    目录 官方解析 博主例子 官方解析 QtWepApp是一个C++的http服务器,受到了java Servlets的启发,因为是Qt写的,所以有跨平台的支持. QtWebApp包含如下的组成部分:   ...

  4. Qt文档阅读笔记-QHostInfo官方解析与实例(根据Host获取IP)

    官方解析 QHostInfo提供了一个静态方法获取主机名: QHostInfo中有一个查找机制,可以根据IP找主机名,也可能工具主机名找IP,可以通过调用QHostInfo::lookupHost这个 ...

  5. Qt文档阅读笔记-QTcpServer官方解析与实例(使用QSocket创建简单的HTTP服务器)

    目录 官方解析 博主例子(做一个简单的HTTP服务器) 本例子中HTTP协议关键点 官方解析 QTcpServer类,提供TCP服务的基础: 这个类接受TCP连接,可以指定一个端口,也可以让其自动一个 ...

  6. Qt文档阅读笔记-QWebPage官方解析与实例

    目录 官方解析 博主例子 源码下载地址 官方解析 QWebPage提供一个视图对象和一个web页面: QWebPage提供了web页面的内容,各种设置(是否支持JavaScript等)和连接,它与QW ...

  7. Qt文档阅读笔记-QWebView官方解析与实例

    目录 背景 官方解析 博主例子 背景 最近发现某Qt项目,出现的效果杠杆的,在看某一小功能的时候,发现有个echart的东西,百度了发现,真的是一个新大陆,Qt加web编程,贼吉尔可怕. 在此发现使用 ...

  8. Qt文档阅读笔记-Q_CLASSINFO官方解析与实例

    官方解析 Q_CLASSINFO 这个宏为类提供额外的信息,要想获取这个Q_CLASSINFO这个信息要使用QObject::metaObject().Qt在Active Qt,Qt D-BUS以及Q ...

  9. Qt文档阅读笔记-stackUnder官方解析与实例

    目录 官方解析 博主例子 官方解析 这里可以配合raise()和lower()这两个函数来使用! 博主例子 用2个label,点击谁谁就浮在界面的最上面,很简单的代码,程序运行截图如下: 源码如下: ...

最新文章

  1. HJ86 求最大连续bit数
  2. jQuery中getJSON跨域原理详解
  3. iOS系统原生二维码条形码扫描
  4. 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理
  5. 【JavaScript算法】---快速排序法
  6. XXX.C(261): error C100: unprintable character 0xA1/3 skipped
  7. 【Unity Shaders】Mobile Shader Adjustment —— 为手机定制Shader
  8. 利用Simple-RTMP-Server(SRS)来进行直播
  9. 计算机控制系统编程语言,可编程控制器常用的几种编程语言
  10. 最短路径算法|Dijkstra‘s Algorithm
  11. 解决从k8s.gcr.io拉取镜像失败问题
  12. 品牌纠纷中的盾牌——商标
  13. 加油站都需要什么手续_开办加油站需要办哪些手续?
  14. OSChina 周三乱弹 —— 程序员的专属小习惯
  15. DirectShow Filter的开发实践
  16. Zotero-word中引用跳转到参考文献/建立超链接-引用格式(Xie et al 2021, Achanta et al 2012)
  17. window php ice安装,bootice怎么添加win10引导
  18. 利用上虚拟化,说一下TLB,以及VHE
  19. js 去除最后一个逗号
  20. windows installer服务坏了修复方法

热门文章

  1. shell检查硬盘分区空间
  2. IT大神提升代码效率的秘密,都私藏在这10个神仙软件里
  3. 今天的绿得像碧玉的 飞鸽
  4. 【飞鸽传书3.0】飞鸽传书3.0关键字布局
  5. 新三国 雷人台词----雷死一群程序员
  6. 2008-09-01 XEIM 1.0 beta 已发布
  7. 点讯输入法S60数字键通用版V6.0(官方签名正式版)
  8. 当实在受不了了,就开干吧!
  9. 代码敲慢一点,学得会快一点
  10. python 西门子交换机_python读取交换机