Qt_C++翻硬币游戏(4)———实现从选择关卡界面跳转到相应游戏界面

首先需要创建一个新的类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());

        }
    }

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值