Qt学习笔记之图片的上下左右移动

2024-01-14 02:30

本文主要是介绍Qt学习笔记之图片的上下左右移动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自己找的图片太大,在移动的时候不明显,懒得再找图片,所以用了QPainter将图片画在了label上
代码如下

void Widget::paintEvent(QPaintEvent *)
{QPainter painter(this);QPixmap pix;pix.load(":img/move.png");//图片的位置painter.drawPixmap(picLabel->x(),picLabel->y(),picLabel->width(),picLabel->height(),pix);
}

将图片上下左右移动是通过重写keyPressEvent虚方法,在这个方法中捕捉按钮事件,用move移动位置
代码如下
widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QLabel>
#include <QPainter>
#include <QKeyEvent>
#include <QDebug>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();
private:QLabel *picLabel;
protected:void paintEvent(QPaintEvent *);void keyPressEvent(QKeyEvent *event);void keyReleaseEvent(QKeyEvent *event);};#endif // WIDGET_H

widget.cpp

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{resize(500, 500);picLabel = new QLabel(this);picLabel->setFixedSize(50, 50);}
//将图片画在label
void Widget::paintEvent(QPaintEvent *)
{QPainter painter(this);QPixmap pix;pix.load(":img/move.png");//图片的位置painter.drawPixmap(picLabel->x(),picLabel->y(),picLabel->width(),picLabel->height(),pix);
}void Widget::keyPressEvent(QKeyEvent *event)
{int x = 0;int y = 0;switch (event->key()) {case Qt::Key_Up:y = picLabel->y() - 10;if(y > -10)picLabel->move(picLabel->x(), y);//向上移动就是x不变y减小break;case Qt::Key_Down:y = picLabel->y() + 10;if(y < this->height() - 40){picLabel->move(picLabel->x(), y);//向下移动是x不变y 变大}break;case Qt::Key_Right:x = picLabel->x() + 10;if(x < this->width() - 40){picLabel->move(x, picLabel->y());}break;case Qt::Key_Left:x = picLabel->x() - 10;if(x > -10)picLabel->move(x, picLabel->y());break;default:break;}
}void Widget::keyReleaseEvent(QKeyEvent *event)
{
}Widget::~Widget()
{}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

效果:
这里写图片描述
这里写图片描述

这篇关于Qt学习笔记之图片的上下左右移动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/603638

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis