资源简介
使用QGraphicsView和QGraphicsScene实现的一个拼图游戏DEMO,演示了Qt 图形视图框架的应用。
代码片段和文件信息
#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);
}
}
//
// class PuzzleImageItem
//
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);
}
//
// class PuzzlePart
//
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);
}
QRectF PuzzleP
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6050 2016-10-14 06:28 qPuzzle\demo.camproj
文件 905216 2016-10-14 06:27 qPuzzle\demo.camrec
文件 77584 2016-10-14 06:30 qPuzzle\demo.gif
文件 4365 2016-10-13 23:51 qPuzzle\imageitem.cpp
文件 1809 2016-10-13 23:44 qPuzzle\imageitem.h
文件 161 2016-10-13 21:37 qPuzzle\images.qrc
文件 1588 2016-10-13 23:45 qPuzzle\main.cpp
文件 41022 2016-10-12 15:08 qPuzzle\model.png
文件 4609 2016-10-12 15:09 qPuzzle\model_1.png
文件 4934 2016-10-12 15:09 qPuzzle\model_2.png
文件 387 2016-10-13 21:36 qPuzzle\qPuzzle.pro
文件 18652 2016-10-13 23:51 qPuzzle\qPuzzle.pro.user
目录 0 2016-10-14 06:32 qPuzzle
----------- --------- ---------- ----- ----
1066377 13
相关资源
- QT之扫雷游戏
- QT的QTreeWidget有checkbox时轻松选中
- 制作含qt的图形文件系统完整过程
- DS18B20测温及QT界面实现
- 基于QT4的列车时刻表查询系统
- QT编写的串口设备调试工具终极版
- Qt编写守护进程
- qt写的一个动感界面
- qt5串口程序
- QT获取天气程序
- myElectronicDictionary.rar
- Delaunay三角剖分
- vicsek模型的Qt实现
- QT4实现的给予QFTP类的FTP客户端程序
- QT进制间的转换,可供新手学习
- Qt实现的连连看游戏源码
- arm板上实现usb摄像头采集及显示(q
- QT闹钟alarm
- qt gps 定位系统源代码
- QT 基于mainwindow添加一个文件菜单
- 简单环形条格进度条
- qtjambi-eclipse-integration-4.5.2_01
- 基于TCP的网络聊天程序
- linux qt4.7 v4l2 YUV(YUYV) mmap 显示视频
- 基于QT的局域网聊天系统215855
- qt入门程序——读取txt文件
- 一个简单的 QT5编写的 串口工具代码
- 一个简单QT5编写的录音机代码
- Qt绘图实现
- 嵌入式Linux系统设计QT计算器
评论
共有 条评论