-
大小: 240KB文件类型: .zip金币: 2下载: 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通过信号和槽通信
相关资源
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
评论
共有 条评论