吉首企业网站建设价格,网站建设费用兴田德润团队,推广公司兴田德润活动,人力资源公司是中介吗历经一个月#xff0c;各种事情磕磕绊绊#xff0c;终于结束了#xff0c;自己还是太菜了 案例的文档写的教程已经很详细#xff0c;这边主要是记录一些问题 github代码 gitee代码
1、图片无法加载
一开始加载首页图片和标题出不来#xff0c;结果是paintEvent重写的字打…历经一个月各种事情磕磕绊绊终于结束了自己还是太菜了 案例的文档写的教程已经很详细这边主要是记录一些问题 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(60i%4 * 60,120i/4 * 60);
}
7、进入关卡后点击返回无效果
查询原因是我把建立连接的代码放到了循环的外边但是play的生成只会在点击关卡时也就是根本没有建立连接,因此要把这个连接放到play的生成代码里边
//chooselevelsence.cpp
//监听每个按钮的事件
connect(menubtn,MyPushButton::clicked,[](){QString str QString(您选择的是%1关).arg(i1);qDebug() str;//进入游戏场景this-hide();//隐藏选择关卡窗口play new PlayScene(i1);play-show();//监听返回选择关卡的信号connect(play, PlayScene::levelSceneBack, []() {qDebug() 返回选择关卡111;QTimer::singleShot(500, this, []() {delete play;//删除当前关卡play NULL;this-show();//显示选择关卡界面});});
});8 使用二维数组判断金币银币
使用map容器储存一个嵌套的vectorvector Qmapint,QvectorQvector,相当于第一个是关卡好后边是一个二维数组使用二维数组储存congfig中关于每关的金币配置值为1是金币值为0是银币
9 翻金币核心
需要获得很多属性xy坐标是否翻面。定时器需要实例化new出来。
信号连接翻金币的代码只需要在构造函数中连接一次
重写鼠标点击事件来阻止金币旋转时的点击
void MyCoin::mousePressEvent(QMouseEvent* e)
{if (this-isAnimation){return;}else{QPushButton::mousePressEvent(e);}
}周围金币反转延时QTimer::singleShot(300,[](){})使用Qtimerlambda表达式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/