-
大小: 240KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-05-24
- 语言: 其他
- 标签: Qt QGraphicsSce
资源简介
CustomSense继承QGraphicsScene,QGraphicsView,重写了鼠标事件,在CustomSense上添加图片并画矩形标记出特定区域,是专门满足这个需求写的小测试例子,使用Qt5实现。
代码片段和文件信息
#include “customsense.h“
#include “ui_customsense.h“
#include
#include
#include
CustomScene::CustomScene(){
item = new QGraphicsRectItem();
addItem(item);
}
// 自定义 Scene
void CustomScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
qDebug() << “Custom scene clicked.“;
QGraphicsScene::mousePressEvent(event);
if (!event->isAccepted()) {
if (event->button() == Qt::LeftButton) {
// 在 Scene 上添加一个自定义 item
QPointF point = event->scenePos();
startPoint = point;
qDebug()<<“startPoint:“< isDrawing = true;
} else if (event->button() == Qt::RightButton) {
// 检测光标下是否有 item
QGraphicsItem *itemToRemove = NULL;
foreach (QGraphicsItem *item items(event->scenePos())) {
if (item->type() == QGraphicsRectItem::Type) {
itemToRemove = item;
break;
}
}
// 从 Scene 上移除 item
if (itemToRemove != NULL)
removeItem(itemToRemove);
}
}
}
void CustomScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsScene::mouseMoveEvent(event);
if(event->buttons()&Qt::LeftButton) //如果鼠标左键按着的同时移动鼠标
{
qDebug() << “Custom scene moved.“;
QPointF point = event->scenePos();
endPoint = point;
if(endPoint.x()- startPoint.x()>20&&endPoint.y()- startPoint.y()>20)
{
removeItem(item);
QPen p;
p.setWidth(2);
p.setColor(QColor(0 160 230));
item->setPen(p);
item->setRect(startPoint.x() startPoint.y() endPoint.x()-startPoint.x() endPoint.y()-startPoint.y());
addItem(item);
}
}
}
void CustomScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if(event->button()==Qt::LeftButton) //如果鼠标左键按着的同时移动鼠标
{
QGraphicsScene::mouseMoveEvent(event);
qDebug() << “Custom scene release.“;
QPointF point = event->scenePos();
endPoint = point;
qDebug()<<“endPoint:“< }
}
void CustomScene::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_Backspace) {
// 移除所有选中的 items
qDebug() << “selected items “ << selectedItems().size();
while (!selectedItems().isEmpty()) {
removeItem(selectedItems().front());
}
} else {
QGraphicsScene::keyPressEvent(event);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-20 09:29 CustomSence\
文件 2765 2018-11-20 09:28 CustomSence\customsense.cpp
文件 683 2018-11-20 09:28 CustomSence\customsense.h
文件 1092 2018-11-20 09:27 CustomSence\CustomSense.pro
文件 23894 2018-11-20 09:29 CustomSence\CustomSense.pro.user
文件 1471 2018-11-16 14:28 CustomSence\customsense.ui
文件 239553 2018-11-19 13:35 CustomSence\image.jpg
文件 93 2018-11-16 16:27 CustomSence\image.qrc
文件 466 2018-11-20 09:29 CustomSence\main.cpp
- 上一篇:PCM编解码实验
- 下一篇:MainWindow和Dialog通过信号和槽通信
相关资源
- MainWindow和Dialog通过信号和槽通信
- Qt下使用GLSL的-变色的小球
- Qt 推箱子游戏及最短路径 源码
- Qt简易浏览器(类似微信)无边框阴影
- Qt状态灯红绿灯实现
- QT:学生信息管理系统
- ModbusTCPMQTT
- qt UDP聊天
- QT自定义 换肤界面
- qt天气预报
- qt聊天室程序
- Qt绘制sin函数静态波形
- Qt异或实现文件加解密.rar
- EncryptQtDemo.rar
- QT等待对话框
- QT5串口上位机源代码
- qml 用item自定义dialog 对话框
- PyQt入门指南
- 汽车仪表盘
- qt做的小程序-鼠标事件
-
Qt Remote ob
ject(QtRO)进程间通信De - 基于QT扫雷游戏开发
- 解决QTextEdit右键菜单为英文的问题
- Qt QRCode生成二维码,完整代码可运行
- mqtt前端调用
- Ubuntu系统:为Qt配置ROS开发环境
- QT4编写的简单计算器
- Qt编写的Leds以及蜂鸣器奏乐
- 用Qt控制开发板led和蜂鸣器
- QT下Mingw实现QTtableview中实现添加复选
评论
共有 条评论