关于QT6实现翻金币小程序的避坑指南

QT6实现翻金币小程序的避坑指南

原教学视频说明:https://www.bilibili.com/video/BV1g4411H78N/?spm_id_from=333.337.search-card.all.click&vd_source=442624ae292ec6b8a3ceccecdfccf14f
本文源码及素材:https://github.com/FifthIntelligence/ReturnCoin

注意:本游戏是相较于原视频游戏的一个变形,本篇记录的亮点在于:

  1. 使用QT6编写,音频控制等多个细节存在与QT5不一致,属于新知识;
  2. 素材为本人网上收集及加工处理,素材尺寸及位置与视频中不一样,存在一定挑战性;
  3. 在本次开发中,存在的bug及软件操作的问题,本文已记录。

目录

  • QT6实现翻金币小程序的避坑指南
    • 一、作品预览
    • 二、游戏功能介绍
    • 三、游戏脉络梳理
    • 四、QT6开发中的注意事项
    • 五、游戏开发过程中的一些个人建议

一、作品预览

  1. 演示视频

ReturnCoin-vedio

  1. 素材截图
    在这里插入图片描述
  2. 运行截图
    在这里插入图片描述

二、游戏功能介绍

  1. 点击图标后进入首页,背景音乐响起;
  2. 点击开始游戏后进入关卡选择页,共20个关卡;
  3. 选择关卡进入游戏页面,4*4矩阵,共16个金币;
  4. 翻其中一个金币,带动周围上下左右金币翻转,每个金币有正面和反面;
  5. 当16个金币全部是金色后游戏获胜,弹出胜利标志,胜利音乐响起;
  6. 翻金币与点击按钮皆有音效;
  7. 游戏界面左下角有关卡说明;
  8. 选择关卡界面、游戏界面存在返回按钮,点击返回上一个场景。

三、游戏脉络梳理

这里呈上一张UML图,代码的话就不铺天盖地的讲解了。

  1. 预览图
    在这里插入图片描述
  2. 局部放大图(1)
    在这里插入图片描述
  3. 局部放大图(2)

在这里插入图片描述
4. 局部放大图(3)
在这里插入图片描述

四、QT6开发中的注意事项

  1. Qt Creator 显示乱码,我这里有这几个对策,定有一条适合你:
    (1) 如果print是乱码;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    UTF-8是比GBK更宽的字符集,选UTF-8准错不了。

(2)如果print不是乱码,但qDebug()是乱码;
试试在main函数加入这几句(重定向到print):

qInstallMessageHandler([](QtMsgType, const QMessageLogContext& context, const QString& msg) {
    std::cout << msg.toStdString() << std::endl;
});
qDebug() << "你好";

(3)使用英文开发和注释,乱码终结者!
2. QT creater 11.0.2版本创建在项目中创建类后自动崩溃
这个问题我屡试不爽,暂时没有解决思路,好在这次开发中的类不多,若你有思路可以给我留言。
我的出错环境是:QT creater 11.0.2 + CMake.
3. QT添加资源后程序总是找不到,也没法使用,一定要编译一下,看到左边的qrc文件展开后有自己想要的文件后才可以
4. 关于QT新建项目显示无法找到ui_xx.h的时候,重启一下Qt就好了(新建UI类后修改完记得保存,要不就会出现这种情况)
5. 关于文件的读写,C有一套、C++有一套(ifream和ofream)、QT中也有一套(QFile),精通一套就行
6. 中途遇到了一个QPixmap图片载入的问题,耽误了不少时间,仔细一看,竟然是路径中的冒号是中文冒号

错误示范:":/res/BackButton.png"
正确示范:":/res/BackButton.png"

MarkDown编辑器都比QT编辑器更好分辨这个错误,更重要的是QT不提醒,大家一定切记切记。
7. 在重写事件时函数名称一定不能写错,要不这bug够找半天的了
在这里插入图片描述
8. QT没法直接给字体上色,但是可以他通过QPalete实现,代码如下:

QLabel * label = new QLabel;
label->setParent(this);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::red); // 设置字体颜色为红色
label->setPalette(palette);
QFont font;
font.setFamily("华文新魏");
font.setPointSize(20);
label->setFont(font);
QString str_1 = QString("Leavel: %1").arg(this->levelIndex);
label->setText(str_1);
label->setGeometry(QRect(30, this->height() - 50, 150, 50));
  1. QT6对音频的操作是QSoundEffect
// prepare the start button audio
QSoundEffect *startSound = new QSoundEffect(this);
startSound->setSource(QUrl::fromLocalFile(":/res/TapButtonSound.WAV"));
startSound->setVolume(0.3);
startSound->play();     // play the audio

如果需要设置无限循环,则需要这样,更多内容可以在帮助文档里查找:

BGmusic->setLoopCount(QSoundEffect::Infinite);
  1. QSoundEffect只播放WAV文件,切记切记,别再整什么MP3;
  2. 文件名是BG.WAV,但程序的路径这么写:
":/res/BG.wav"

会导致音频文件无法解析,因为大小写不一样。
12. 设置背景图片的透明度,可以使用QGraphicsOpacityEffect ,这串代码只看最后三句就行

  // create coin background
  QPixmap pix = QPixmap(":/res/BoardNode.png");
  pix = pix.scaled(pix.width()*1.5, pix.height()*1.5);
  QLabel *label = new QLabel;
  label->setGeometry(0, 0, pix.width(), pix.height());
  label->setPixmap(pix);
  label->setParent(this);
  label->move(330 + i*85, 170 + j*85);
  QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect();  // set label opacity
  effect->setOpacity(0.6);
  label->setGraphicsEffect(effect);

五、游戏开发过程中的一些个人建议

  1. 一定要看QT开发文档,如果薪资想要提升一个层次,开发文档必不可少。
    QT的开发文档参考这个路径:
D:\Qt\Tools\QtDesignStudio\qt6_design_studio_reduced_version\bin

直接将它固定在电脑开始菜单上,可以随时打开:
在这里插入图片描述
那么问题来了,如果打开后什么文档也没有,可以试试这个方法:

在这里插入图片描述
遇到什么问题就在这里搜,第一手的解释信息:
在这里插入图片描述
2. QT快捷键:Ctrl+Alt+向上键、Ctrl+Alt+向下键分别是向上向下复制,很常用;
3. 鼠标穿透属性:WA_TransparentForMouseEvents,可以用这个在文档中搜索。


若有任何问题,欢迎评论或私信!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/176900.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

互动话术有套路,直播间人气翻倍就靠它

一场直播如何撬动 GMV 增长&#xff0c;好的话术至关重要。这也是为什么有的直播间总是门庭若市&#xff0c;而有的直播间就是互动寥寥。 无论是欢迎话术、带货话术&#xff0c;还是互动话术等&#xff0c;它们最重要的功能就是拉近与观众的关系。这能让他们产生持续信任&…

半导体工艺控制设备1

半导体工艺控制设备对芯片良率至关重要&#xff0c;随着制程微缩需求倍增。工艺节点每缩减一代&#xff0c;工艺中产生的致命缺陷数量会增加 50%&#xff0c;因此每一道工序的良品率都要保持在非常高的水平才能保证最终的良品率。当工序超过 500 道时&#xff0c;只有保证每一道…

Java 最简单的实现 AES 加密和解密

AES简介 AES&#xff08;Advanced Encryption Standard&#xff09;高级加密标准&#xff0c;是一种被广泛使用的对称加密算法&#xff0c;用于加密和解密数据。它曾经是美国政府的一个机密标准&#xff0c;但现在已成为公开的加密算法&#xff0c;并被广泛使用于商业、政府及…

python命令行交互 引导用户选择宠物

代码 以下代码将在命令行中&#xff0c;引导用户选择一个或者多个宠物&#xff0c;并反馈用户选择的宠物 # -*- coding:UTF-8 -*- """ author: dyy contact: douyaoyuan126.com time: 2023/11/22 15:19 file: 在命令行中引导用户选择宠物.py desc: xxxxxx &qu…

亚马逊买家号用邮箱怎么注册

想要用邮箱注册亚马逊买家号&#xff0c;那么准备好能接受验证码的邮箱后打开相应的亚马逊官网即可。打开官网后点击注册——输入昵称——输入邮箱——输入密码——接受邮箱验证码并输入&#xff0c;如果遇到需要手机号验证就输入手机号&#xff0c;如果不需要验证&#xff0c;…

【蓝桥杯选拔赛真题25】C++两个数比大小 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++两个数比大小 一、题目要求 1、编程实现 2、输入输出 二、算法分析

[SWPUCTF 2021 新生赛]非常简单的逻辑题 // %的逆向

代码解密题 flag xxxxxxxxxxxxxxxxxxxxx s wesyvbniazxchjko1973652048$-&*<> result for i in range(len(flag)):s1 ord(flag[i])//17s2 ord(flag[i])%17result s[(s1i)%34]s[-(s2i1)%34] print(result) # result v0b9n1nkajzj0c4jjo3oi1h1i937b395i5y5e0e…

[MICROSAR Adaptive] --- Communication Management

0 引言 本期会介绍communicationmanagement通信管理,首先介绍它的特点使用方式,然后介绍模型中的相关元素和c++代码中的相关API,最后我们实现一个应用程序,他有两个Executable组成,一个是提供服务的provider,另一个是使用这个服务的consumer。 1 communication manage…

@PropertySource适配通配符加载到Environment的一种方案

PropertySource可将配置文件加载到内存&#xff0c;时间有限说干的&#xff0c;PropertySource注解有4个参数&#xff0c;其中value表示要加载文件的路径&#xff0c;这个参数不支持通配符。还有一个参数PropertySourceFactory是加载配置文件的工厂&#xff0c;这两个参数配合使…

【Linux】教你在Ubuntu下部署开发环境(JDK8, Tomcat8, MySQL8)

文章目录 前言apt1.0 认识 apt1.1 查找软件1.1 安装软件(需要有管理员权限)1.2 卸载软件1.3 更新可用软件包列表1.4 更新已安装的包1.5 注意事项 JDK2.1 查找软件包2.2 下载软件2.3 验证是否成功 Tomcat3.1 下载 Tomcat 压缩包3.2 将压缩包传到 Linux 中3.3 进行解压缩3.4 启动…

竞赛选题 酒店评价的情感倾向分析

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 酒店评价的情感倾向分析 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/post…

js读取json文件

1. 原生的两种方法 1.1 XMLHttpRequest const xhr new XMLHttpRequest(); xhr.overrideMimeType("application/json"); xhr.open(GET, data.json, true); xhr.onreadystatechange function () {if (xhr.readyState 4 && xhr.status 200) {const data …

ubuntu借助overlay方案实现重启自动还原

配置重启还原OS 首先&#xff1a;sudo apt install overlayroot 安装一下软件 然后编辑配置文件&#xff1a;/etc/overlayroot.conf * overlayroottmpfs or overlayroottmpfs:PARAMETERS write all changes to a temporary (ram only) backing device A tmpfs mount will …

以45°斜抛水平距离最远

已知&#xff1a;斜抛物体的初速度为 v 0 v_0 v0​&#xff08;与水平方向的夹角为 θ \theta θ&#xff09;&#xff0c;重力加速度为 g g g。 求&#xff1a;抛物轨迹方程&#xff1f; 垂直方向的速度为 v y v 0 sin ⁡ θ − g t v_yv_0 \sin \theta -gt vy​v0​sinθ−…

SpringBoot整合Redis,redis连接池和RedisTemplate序列化

SpringBoot整合Redis 1、SpringBoot整合redis1.1 pom.xml1.2 application.yml1.3 配置类RedisConfig&#xff0c;实现RedisTemplate序列化1.4 代码测试 2、SpringBoot整合redis几个疑问&#xff1f;2.1、Redis 连接池讲解2.2、redisTemplate和stringRedisTemplate 1、SpringBoo…

CmakeLists编译的动态库.so移动到其他位置后,提示找不到该库的依赖库解决办法

主要问题&#xff1a; 最近在搞海康SDK调用相机&#xff0c;发现在linux下一直调用不起来相机&#xff0c;总是提示error code&#xff1a;29&#xff0c;注册失败&#xff0c;重新编译优惠存在找不到依赖库的问题。 1.异常 CmakeLists编译的动态库.so移动到其他位置后&#…

软件系统测试有哪些类型和方法?

在软件开发过程中&#xff0c;系统测试是确保软件质量和稳定性的重要环节。不同类型的软件系统测试覆盖了不同的测试需求&#xff0c;而不同的测试方法则能够有效地提高测试效果。 一、常见的软件系统测试类型&#xff1a; 1、功能测试&#xff1a;验证软件是否按照需求规格说…

02【SpringBoot静态处理、错误处理】

目录 一、SpringBoot的WEB开发 1.1 静态资源的处理 1.1.1 静态资源目录 1&#xff09;SpringBoot静态资源处理 2&#xff09;关于静态资源处理的配置 3&#xff09;欢迎页面的处理 4&#xff09;修改SpringBoot资源访问路径 1.1.2 WebJars资源 1.2 注册Servlet三大组件…

银升玻璃能源数据采集监控方案

项目背景 监控配电房电表的电压、电流、功率、总电能等数据。 监控配电房变压器的电流、温度数据&#xff0c;在数据超出额定指标时&#xff0c;进行报警推送。 现场调研情况 经过现场调研&#xff0c;共有3个变压器房&#xff0c;有不同类型的电表。具体如下表&#xff1a…

Day27|Leetcode 39. 组合总和 Leetcode 40. 组合总和 II Leetcode131. 分割回文串

Leetcode 39. 组合总和 题目链接 39 组合总和 本题目和前面的组合问题差不多&#xff0c;只不过这里能重复选取数字&#xff0c;还是要注意组合的定义&#xff0c;交换数字顺序还是算一个组合&#xff0c;所以这里还是用我们的startIndex来记录取的数字到哪里了&#xff0c;下…