资源简介
参考的是书上的代码,主要是觉得有趣,修改了一些不足,并加入了随意拉大窗口的部分代码。
代码片段和文件信息
#include “keyevent.h“
KeyEvent::KeyEvent(QWidget *parent)
:QWidget(parent)
{
setWindowtitle(tr(“Key Event“));
setAutoFillBackground(true);
QPalette palette = this->palette();
palette.setColor(QPalette::WindowQt::white);
setPalette(palette);
image.load(“:/images/1.png“);
QMatrix martix;
martix.scale(0.50.5);
image = image.transformed(martix);
setMinimumSize(image.width()image.height());
//setMaximumSize(512256);
resize(512 256);
step=32;
width=size().width();
height=size().height();
startX=0;
startY=0;
pix = new QPixmap(widthheight);
drawPix();
}
KeyEvent::~KeyEvent()
{
}
void KeyEvent::drawPix()
{
pix->fill(Qt::white);
QPainter *painter = new QPainter(pix);
QPen pen(Qt::DotLine);
painter->setPen(pen);
for(int i=step;i {
painter->drawLine(QPoint(i0)QPoint(iheight));
i=i+step;
}
for(int j=step;j {
painter->drawLine(QPoint(0j)QPoint(widthj));
j=j+step;
}
painter->drawImage(QPoint(startXstartY)image);
delete painter;
}
void KeyEvent::keyPressEvent(QKeyEvent *event)
{
if(event->modifiers() == Qt::ControlModifier)
{
if(event->key() == Qt::Key_Left)
{
startX=(startX-1<0)?startX:startX-1;
}
if(event->key() == Qt::Key_Right)
{
startX=(startX+1+image.width ()>width)?startX:startX+1;
}
if(event->key() == Qt::Key_Up)
{
startY=(startY-1<0)?startY:startY-1;
}
if(event->key() == Qt::Key_Down)
{
startY=(startY+1+image.height()>height)?startY:startY+1;
}
}
else
{
startX=startX-startX%step;
startY=startY-startY%step;
if(event->key() == Qt::Key_Left)
{
startX=(startX-step<0)?startX:startX-step;
}
if(event->key() == Qt::Key_Right)
{
startX=(startX+step+image.width()>width)?startX:startX+step;
}
if(event->key() == Qt::Key_Up)
{
startY=(startY-step<0)?startY:startY-step;
}
if(event->key() == Qt::Key_Down)
{
startY=(startY+step+image.height()>height)?startY:startY+step;
}
if(event->key() == Qt::Key_Home)
{
startX=0;
startY=0;
}
if(event->key() == Qt::Key_End)
{
startX=width-image.width();
startY=height-image.height();
}
}
update();
}
void KeyEvent::paintEvent(QPaintEvent *)
{
QPainter painter(this);
drawPix();
painter.drawPixmap(QPoint(00)*pix);
}
void KeyEvent::resizeEvent(QResizeEvent *event)
{
width=size().width();
height=size().height();
startX=(startX + image.width()>width)?width-image.width():startX;
startY=(startY+image.height()>height)?height-image.height():startY;
if (pix) {
delete pix;
pix = NULL;
}
pix = new QPixmap(widthheight);
update();
}
- 上一篇:Qt自动补全
- 下一篇:Qt下tcp和udp的编程
相关资源
- flash游戏中控制角色移动的源代码
- 基于 ROS 与 Kinect 的移动机器人同时定
- 移动onenet 基于arduino IDE 的mqtt连接
- 2016全国职业技能大赛高职组移动互联
- abaqus双椭球移动热源模型dflux子程序
- mobiscroll-custom-2.17.0插件
- NS3中的高速移动模型和车联网
- 微信小程序连接移动OneNet平台
- rem布局实现不同分辨率移动终端的自
- cdc mbim通用移动宽带调制解调器的操作
- 自己制作的一键弹出移动磁盘U盘工具
- 模拟鼠标移动轨迹
- vue 移动端应用完整项目模仿qq音乐
- QT 精美相册例程 可移动 纯代码
-
搜搜移动大厅(xm
l/序列化/IO流实现 - ADB 1.0.40.rar
- 《Ad Hoc移动无线网络--原理、协议与应
- 织梦DedeCMS最新版手机移动端静态生成
- H5小游戏-H5答题游戏
- 移动通信网络优化大纲
- 触摸屏flash源代码,单点拖拽移动效果
- Unity物体按角度移动
- Flash 星星坠落 鼠标移动效果.rar
- 移动地理信息系统 报告+软件源码+成
- 稳定的有领航者的多移动agent群集运动
- svg移动+缩放+拖动添加+事件
- unity 摇杆控制物体移动功能
- 基于人工势场理论的多移动机器人的
- 实现canvas 图片拖拽旋转移动 点击转
- Qt简易浏览器(类似微信)无边框阴影
评论
共有 条评论