首先需要创建一个新的类playScence:
1.设置相应的背景,标题,窗口大小;
2.设置菜单栏;//1.2两步骤重复多次故在此不做描述
3.设置back按钮;
4.添加标签
5.设置硬币的放置背景;
一.设置back按钮;
引用myPushButton文件,在play界面创建按钮对象
1.首先实现按钮两种不同照片的切换:
//设置back按钮,实现两种不同状态图片的切换
mypushbutton * backBtn=new mypushbutton(":/res/BackButton.png",":/res/BackButtonSelected.png");
backBtn->setParent(this);
backBtn->move(this->width()-backBtn->width(),this->height()-backBtn->height());
2.再实现返回效果(使用自定义信号进行发送)
需要自定义信号,并且在游戏选择界面对此信号进行监控
#ifndef PLAYSCENCE_H
#define PLAYSCENCE_H
#include <QMainWindow>
class playScence : public QMainWindow
{
Q_OBJECT
public:
playScence(int num);//将关卡数作为参数进行传入
//重写绘画事件,添加背景图片
void paintEvent(QPaintEvent *event);
signals:
//创建自定义信号,用来实现back的返回功能
void backBtnBack();
};
//验证是否鼠标事件是否作用到按钮上
connect(chooseBtn,&mypushbutton::clicked,[=](){
QString str=QString("选择的关卡为第%1关").arg(i+1);
qDebug()<<str;
playScence * play=new playScence(i+1);
QString str1=QString("游戏进入第%1关").arg(i+1);
qDebug()<<str1;
this->hide();
play->show();
//实现back按钮的返回功能,监视back的自定义信号
connect(play,&playScence::backBtnBack,[=](){
QTimer::singleShot(500,this,[=](){
delete play;
this->show();
});
});
});
二.添加标签(注意:不能标签区域不能覆盖到back按钮,会将按钮点击屏蔽)
//在游戏界面中添加此关卡数Level:标签 QLabel
QLabel * myLabel=new QLabel(this);
//myLabel->setGeometry(30,this->height()-50,120,50);
myLabel->setFixedSize(70,30);
myLabel->move(0,this->height()-myLabel->height());
QString str=QString("Level:%1").arg(num);
myLabel->setText(str);
//设置字体字号,字体风格
QFont font;
font.setFamily("黑体");
font.setPointSize(20);
myLabel->setFont(font);//将设置好的字体应用于Label中
三.设置硬币的放置背景
//使用for循环生成4x4矩阵
for(int i=0;i<4;++i)
{
for(int j=0;j<4;++j)
{
//使用Label进行创建
QLabel * label=new QLabel(this);
QPixmap pix;
pix.load(":/res/BoardNode.png");
label->setPixmap(pix);
label->setGeometry(0,0,pix.width(),pix.height());
label->move(57+i*pix.width(),200+j*pix.height());
}
}