QT----Visual stdio翻金币案例,附源码

历经一个月,各种事情磕磕绊绊,终于结束了,自己还是太菜了
案例的文档写的教程已经很详细,这边主要是记录一些问题
github代码
gitee代码

1、图片无法加载

一开始加载首页图片和标题出不来,结果是paintEvent重写的字打错了,P大写了导致重写绘图事件失败

2、重写pushbutton

自定义pushbutton,新建一个QT class继承自Qwidget,修改继承自QPushButton

在这里插入图片描述

使用this->setStyleSheet("QPushButton{border:0px;}");将按钮设置为图片的形状,不加的只会是矩形。

3、让按钮拥有点击的效果

让开始按钮点击跳动可以采用一下的方式

connect(startBtn,&QPushButton::pressed,[=](){
    startBtn->move(this->width() * 0.5 - startBtn->width() * 0.5, this->height() * 0.5 + 15);
});
connect(startBtn, &QPushButton::released, [=]() {
 startBtn->move(this->width() * 0.5 - startBtn->width() * 0.5, this->height() * 0.5 + 10);
});

4、创建chooselevelsence报错没有默认的构造函数

创建chooselevelsence报错没有默认的构造函数,在实例化是把父类传入chooselevelsene* chooseScene = new chooselevelsene(this);

5、点击返回,返回主界面

使用自定义信号和槽来实现,void定义信号,emit发送

6、 一个循环写出一个矩阵

太妙了,使用%取余来获得x轴,用整除来得到y轴

for (int i = 0; i < 20; i++)
{
 MyPushButton* menubtn = new MyPushButton(":/res/LevelIcon.png");
 menubtn->setParent(this);
 menubtn->move(60+i%4 * 60,120+i/4 * 60);
}

7、进入关卡后点击返回无效果

查询原因是我把建立连接的代码放到了循环的外边,但是play的生成只会在点击关卡时,也就是根本没有建立连接,因此要把这个连接放到play的生成代码里边

//chooselevelsence.cpp
//监听每个按钮的事件
connect(menubtn,&MyPushButton::clicked,[=](){
 QString str = QString("您选择的是%1关").arg(i+1);
 qDebug() << str;


 //进入游戏场景
 this->hide();//隐藏选择关卡窗口
 play = new PlayScene(i+1);
 play->show();

 //监听返回选择关卡的信号
 connect(play, &PlayScene::levelSceneBack, [=]() {
  qDebug() << "返回选择关卡111";
  QTimer::singleShot(500, this, [=]() {
   delete play;//删除当前关卡
   play = NULL;
   this->show();//显示选择关卡界面
   });
 });
});

8 使用二维数组判断金币银币

使用map容器储存一个嵌套的vector,vector Qmap<int,Qvector<Qvector>>,相当于第一个是关卡好,后边是一个二维数组,使用二维数组储存congfig中关于每关的金币配置,值为1是金币,值为0是银币

9 翻金币核心

需要获得很多属性,xy坐标,是否翻面。定时器需要实例化new出来。

信号连接翻金币的代码只需要在构造函数中连接一次

重写鼠标点击事件来阻止金币旋转时的点击

void MyCoin::mousePressEvent(QMouseEvent* e)
{
 if (this->isAnimation)
 {
  return;
 }
 else
 {
  QPushButton::mousePressEvent(e);
 }
}

周围金币反转延时QTimer::singleShot(300,[=](){}),使用Qtimer+lambda表达式,300是毫秒

10 判断游戏胜利无响应

排查发现是Qtimer,把胜利的代码放到了QTimer后边,周围金币反转是延时的,因此更新金币数组就会延迟,但是代码是直接执行的,就是执行完QTimer里边的翻金币立刻就执行胜利条件判断,所以不会响应。要把响应代码也放到Qtimer里边。

11 添加音效

引入QSound头文件报错,需要添加multimedia模块。项目–QT project settings–QTmodules,添加上multimedia。但是6.4已经把Qsound删了,我们使用QSoundEffect

在这里插入图片描述

在这里插入图片描述

代码很简单

//播放胜利音效
QSoundEffect *winsound = new QSoundEffect(this);
//加载本地文件
winsound->setSource(QUrl::fromLocalFile(":/res/LevelWinSound.wav"));
winsound->play();

12 让每个场景的位置保持一致

进入一个新场景拖动后返回,会变到没有拖动前的位置,比较乱,让每个场景都互通位置

//进入选择关卡时
//设置choosesence场景的位置
chooseScene->setGeometry(this->geometry());

//返回主界面时
 this->setGeometry(chooseScene->geometry());

13 打包发布和扩展

将debug修改为release,重新运行一边

在这里插入图片描述

找到exe文件,复制到一个单独的文件夹
在这里插入图片描述

打开qt的cmd,先cd到你新建的这个路径,然后运行`windeployqt CoinFilp.exe`,打包qt环境

在这里插入图片描述

使用hm nis edit打包程序

使用参考网址https://www.bilibili.com/read/cv16481371/

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

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

相关文章

Java版企业电子招标采购系统源码——鸿鹄电子招投标系统的技术特点

在数字化时代&#xff0c;采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过…

opencv期末练习题(2)附带解析

图像插值与缩放 %matplotlib inline import cv2 import matplotlib.pyplot as plt def imshow(img,grayFalse,bgr_modeFalse):if gray:img cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)plt.imshow(img,cmap"gray")else:if not bgr_mode:img cv2.cvtColor(img,cv2.COLOR_B…

通信原理 | python调制识别数据及代码

import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchsummary import summary from torch.utils.data import DataLoader, TensorDataset

Hive学习(13)lag和lead函数取偏移量

hive里面lag函数 在数据处理和分析中&#xff0c;窗口函数是一种重要的技术&#xff0c;用于在数据集中执行聚合和分析操作。Hive作为一种大数据处理框架&#xff0c;也提供了窗口函数的支持。在Hive中&#xff0c;Lag函数是一种常用的窗口函数&#xff0c;可以用于计算前一行…

新全国产迅为龙芯 3A6000 处理器板卡

11月28日&#xff0c;“2023龙芯产品发布暨用户大会”在北京举行&#xff0c;迅为作为龙芯重要合作伙伴受邀参加&#xff0c;在整机产品发布仪式上&#xff0c;展示了基于龙芯 3A6000 处理器的全国产安全型工控计算机。 龙芯 3A6000 处理器完全自主设计、性能优异&#xff0c;代…

固定资产盘点系统设计与实现

固定资产盘点系统设计与实现 最近的业务需求不多&#xff0c;趁着闲的时候&#xff0c;顺便搞了个IT固定资产盘点系统&#xff0c;难度不大&#xff0c;比较实用&#xff0c;这个系统将来可以用在整个财务方面的固定资产盘点&#xff0c;结合Zebra的PDA扫描枪&#xff0c;还是比…

股票评级遭下调,苹果市值一夜蒸发超7000亿!未来还要继续跌?

美股2024年首个交易日就给投资者来了个“开门黑”&#xff0c;苹果市值一夜蒸发7600亿元&#xff0c;这可是个大新闻啊&#xff01;而在这场大跌中&#xff0c;美国国债和多数美股指也未能幸免。 先来看看美国国债&#xff0c;路透社分析说&#xff0c;美国国债收益率的波动反映…

【Win10安装Tensorrt和torch2trt】

Win10安装Tensorrt和torch2trt 1 前言1.1 实验环境1.2 下载链接 2 具体安装2.1 TensorRT安装2.1.1 设置环境变量2.1.2 安装TensorRT资源包中的3个whl文件2.1.3 复制tensorrt的库到CUDA安装目录的指定文件夹 2.2 安装torch2trt2.3 验证是否安装成功 1 前言 1.1 实验环境 &…

STM32CubeMX RS485接口使用

一、基本知识 TTL&#xff08;Transistor-Transistor Logic&#xff09;&#xff1a; 电平范围&#xff1a; 逻辑1对应于2.4V–5V&#xff0c;逻辑0对应于0V–0.5V。通信特点&#xff1a; 全双工。特点&#xff1a; 常见于单片机和微控制器的IO电平&#xff0c;USB转TTL模块通常…

小型洗衣机哪个好?口碑最好迷你洗衣机排行榜

洗衣机是我们日常生活中必不可少的家电之一&#xff0c;它可以让我们更加方便地清洗衣物&#xff0c;让我们的衣服更加干净和舒适。但是由于我们的内衣裤、袜子这些贴身衣物不能够直接扔进大型洗衣机与其他的衣物一起混洗&#xff0c;混洗会导致我们的衣物出现细菌的交叉感染&a…

医院信息系统集成平台—Ensemble集成平台中间件

Ensemble HIE(健康信息交换)是InterSystems公司一个新的产品,它采用了一种全新的解决方案,是一个强大的应用软件整合平台,它包括了为医疗信息交换预先开发好的组件,使用Ensemble可以快速地整合和开发复合应用程序。Ensemble在增强现有软件功能、协调新的商业过程和集中企…

红酒送礼选对不选贵,这些挑选技巧一定要收藏好

遇到过节的时候&#xff0c;大家都张罗着买点什么东西送给亲朋好友老丈人&#xff0c;领导同事丈母娘。云仓酒庄的品牌雷盛红酒LEESON分享选择最多的就是烟酒茶&#xff0c;烟和茶已经成为常态&#xff0c;送红酒却是一种新风尚。在琳琅满目的红酒品类中&#xff0c;怎么才能选…

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测 目录 分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于SVM-RFE-LSTM的特征…

工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)

工业相机如何实现实时和本地Raw图像和Bitmap图像的保存和相互转换&#xff08;C#代码&#xff0c;UI界面版&#xff09; 工业相机图像格式工业相机实现Raw图像和Bitmap图像的保存和转换的技术背景在相机SDK中获取图像转换图像的代码分析工业相机回调函数里保存Bitmap图像数据工…

【LeetCode-剑指offer】--15.找到字符串中所有字母异位词

15.找到字符串中所有字母异位词 方法&#xff1a;滑动窗口 class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> ans new ArrayList<>();int m s.length(),n p.length();if(n > m){return ans;}int[] cnt1 new i…

ES6 class详解

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

simulink代码生成(九)—— 串口显示数据(纸飞机联合调试)

纸飞机里面的协议是固定的&#xff0c;必须按照协议配置&#xff1b; &#xff08;1&#xff09;使用EasyHEX协议&#xff0c;测试int16数据类型 测试串口发出的数据是否符合&#xff1f; 串口接收数据为&#xff1a; 打开纸飞机绘图侧&#xff1a; &#xff08;1&#xff09…

Ansible、Slatstack、Puppet自动化运维工具介绍

一、自动化运维工具的选择 1、为什么要用自动化运维工具&#xff1f; 运维的痛点: 海量的设备越来越多&#xff0c;每台设备单独管理需要投入更多人力&#xff1b; 传统运维效率低&#xff0c;大多工作人为完成&#xff1b; 传统运维工作繁琐&#xff0c;人工操作容易出错…

NSSCTF 简单包含

开启环境: 使用POST传flag&#xff0c;flag目录/var/www/html/flag.php 先使用post来尝试读取该flag.php 没反应: 查看一下源码index.php&#xff0c;看有什么条件 base64解密: <?php$path $_POST["flag"];if (strlen(file_get_contents(php://input)) <…

【algorithm】自动驾驶常见常考的几个模型和推导,顺便总结自己遇到的考题经验不断更新之———控制版

写在前面 本来快达成目标了&#xff0c;没想到公司遭受了问题&#xff0c;公司和同事我感觉还是挺好的&#xff0c;有国企的正规也有小企业的灵活&#xff0c;大家都很有学习欲望。 作为本次再次复习回忆如下&#xff1a; 把之前面试准备的 机器学习&#xff08;基本搬运到CSD…