资源简介
基于Qt软件实现,从左边窗口选择图片,然后拖拉到右边窗口进行图片得自由拼接。类似与Visio画流程图得简单设计
代码片段和文件信息
#include “imageitem.h“
#include
#include
#include
#include
#include
#include
#include
#include
PuzzlePartManager::PuzzlePartManager(QGraphicsScene *scene)
: m_scene(scene)
{
}
void PuzzlePartManager::addSourceItems(int partId PuzzleImageItem *item)
{
m_sourceItems.insert(partId item);
}
void PuzzlePartManager::removeItem(int partId)
{
QMap::iterator it = m_sourceItems.find(partId);
if(it != m_sourceItems.end())
{
PuzzleImageItem *item = it.value();
m_sourceItems.remove(partId);
m_scene->removeItem(dynamic_cast(item));
item->deleteLater();
}
if(m_sourceItems.size() == 0)
{
QGraphicsSimpleTextItem *info = new QGraphicsSimpleTextItem(“Congratulations!“);
info->setPen(QPen(Qt::blue));
info->setPos(10 10);
QFont font = qApp->font();
font.setPointSize(16);
info->setFont(font);
m_scene->addItem(info);
}
}
PuzzleImageItem::PuzzleImageItem(const QString & imagePath int w
int h int partId)
: m_image(imagePath)
m_width(w)
m_height(h)
m_partId(partId)
{
setCursor(Qt::OpenHandCursor);
setAcceptedMouseButtons(Qt::LeftButton);
}
QRectF PuzzleImageItem::boundingRect() const
{
return QRectF(0 0 m_width m_height);
}
void PuzzleImageItem::paint(QPainter *painter const QstyleOptionGraphicsItem *option QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
painter->drawImage(0 0 m_image);
}
void PuzzleImageItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
setCursor(Qt::ClosedHandCursor);//鼠标放置到图片上的样子 点击时样式
}
void PuzzleImageItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (QLineF(event->screenPos() event->buttonDownScreenPos(Qt::LeftButton))
.length() < QApplication::startDragDistance()) {
return;
}
QDrag *drag = new QDrag((Qobject*)event->widget());
QMimeData *mime = new QMimeData;
mime->setImageData(m_image);
mime->setData(QString(QmetaType::typeName(QmetaType::Int)) QString(“%1“).arg(m_partId).toLatin1());
drag->setMimeData(mime);
drag->setPixmap(QPixmap::fromImage(m_image));
drag->setHotSpot(QPoint(15 30)); //拖动时图标显示的位置(图标指的是圆加一斜杠,禁止图标)
drag->exec();
setCursor(Qt::OpenHandCursor);
}
void PuzzleImageItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
setCursor(Qt::OpenHandCursor); //不点击的样式
}
PuzzlePart::PuzzlePart(PuzzlePartManager *mgr int w int h int partId QGraphicsItem *parent)
: QGraphicsobject(parent)
m_sourcePartManager(mgr)
m_width(w)
m_height(h)
m_partId(partId)
m_dragOver(false)
{
setAcceptDrops(true);
}
QRect
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-14 16:27 tryPuzzel\
文件 2772 2017-11-30 21:49 tryPuzzel\boat.png
文件 2963 2017-11-30 21:49 tryPuzzel\car.png
文件 4476 2018-03-14 16:27 tryPuzzel\imageitem.cpp
文件 1961 2018-03-14 14:50 tryPuzzel\imageitem.h
文件 122 2018-03-14 13:45 tryPuzzel\images.qrc
文件 1517 2018-03-14 14:50 tryPuzzel\main.cpp
文件 225 2018-03-14 13:47 tryPuzzel\tryPuzzel.pro
文件 23852 2018-03-14 16:27 tryPuzzel\tryPuzzel.pro.user
- 上一篇:hfss天线增益仿真
- 下一篇:QT之打开文件对话框选择文件
相关资源
- QT之打开文件对话框选择文件
- QTP自动化测试-相关练习操作视频
- linux Qt4 软键盘
- Qt使用FontAwesome的
- 毕业设计——基于QT的GPS车载导航系统
- Qt实现拼图游戏
-
Qt st
yle Sheets Examples - 提供Qt中快速多次发射信号与耗时槽函
- 基于Qt的坦克大战游戏源码
- Qt5.5 代码实现记事本程序 MiniText
- Qt4第三方库qextserialport
- 多界面跳转切换
- Qt VideoCapture图像采集
- Qt Designer汉化包亲测可用内附说明.z
- Qt 自定义导航栏
- qt黑白棋源码简单
- Qt4.8.4和creator和mingw安装配置说明总结
- 在ARM9和ARMLinux下利用QT编写的实时数据
- 华清远见智能家居项目
- QT实现计算器包含科学计算与进制转换
- qt简易黑白棋代码,不带可执行程序,
- QT text预加载方式显示大文件文本.zi
- 基于linux Qt的仿QQ聊天简单对话框
- QthreadPools.rar
- ESP8266和MQTT协议接收平台下发命令版
- QT编写程序,实现一个坐标轴功能
- QT+opencv图像几何变换,包括图像平移
- Qt鼠标拖动绘制基本几何图形(直线、
- 基于QT和OpenCV的五子棋实现源码
-
linux下基于mpla
yer的多媒体播放器
评论
共有 条评论