QT界面开发-游戏案例

目录


目录

一、设计登录主页面

1.0添加资源文件

1.1设置窗口(标题、图标、背景)

1.2自定义按钮类

1.3开始按钮 弹跳效果

1.4播放音乐

二、切换游戏界面

2.1最核心的逻辑

2.2代码创建工具栏

2.3返回主页面按钮

2.3优化切换页面

三、选择关卡按钮(无跳转)

3.1简要介绍

3.2for循环生成关卡选择按钮

3.3标签技术来显示按钮上的数字

3.4字体类来修改文字属性

四、打包发布

4.1生成release版本的exe文件

4.2利用QT自带 windeployqt 的生成打包文件

4.3采用第三方工具打包文件


一、设计登录主页面

1.0添加资源文件

将所需要的图片、音频添加到资源文件中

1.1设置窗口(标题、图标、背景)

设置窗口属性

     //1.添加资源文件

    //2.指定窗口大小--固定大小
    this->setFixedSize(900,600);

    //3.设置窗口左上角图标
    this->setWindowIcon(QIcon(":/resour/04.png"));

    //4.设置窗口标题
    this->setWindowTitle("姬霓太美");

    //5.加载背景图片--重写画图事件函数
    //详见绘图事件函数中

    //6.在ui文件中添加工具栏,并将其他无用部分删除

加载背景图片和游戏名称图片

//重写绘图函数--声明作用域,不然会被编译为全局函数
//头文件--<QPainter>
void newload::paintEvent(QPaintEvent*)
{
    //1.创建一个画家对象
    QPainter painter1(this); //指定父亲

    //2.创建pixmap类型的对象,用于加载背景图片
    QPixmap pixmap1;

    //3.利用pixmap1加载背景图片
    pixmap1.load(":/resour/01.jpg");

    //4.利用画家将pixmap1加载的背景图画出来
    //注意drawpixmap的参数
    painter1.drawPixmap(0,0,this->width(),this->height(),pixmap1);

    //5.利用pixmap加载《游戏名》图片
    pixmap1.load(":/resour/06.png");       //URL:互联网上标准资源的唯一地址

    //6.改变图片大小
    //scaled:缩放、规模
    pixmap1=pixmap1.scaled(pixmap1.width()*0.4,pixmap1.height()*0.4);

    //7.将 游戏名 的图片画出来
    painter1.drawPixmap(20,33,pixmap1);

}

1.2自定义按钮类

目的是:按下按钮时,有一个弹动的效果

1.自定义按钮类:mybutton,继承于QPushButton,具有父类的一些属性,也有自己的特有属性

2.自己编写构造函数,第一个参数是未点击按钮图片时的路径,第二个是点击按钮时图片的路径

3.有两个成员函数保存图片路径,加载函数时一些特殊的设定

1.重写mybutton类构造函数

头文件:

//重写构造函数
    //explicit mybutton(QWidget *parent = nullptr);

    //注意第二个参数为默认参数,实现和声明只需要有一个说明即可
    mybutton(QString normalimg,QString pressimg = "");

    //两个成员函数保存图片路径
    QString normalimgpath;
    QString pressimgpath;

cpp文件:

mybutton::mybutton(QString normalimg, QString pressimg)
{
    //创建一个Pixmap,更好的显示图片
    QPixmap pixmap1;

    //保存输入的路径
    normalimgpath = normalimg;
    pressimgpath  = pressimg;


    //加载默认显示的图片
    int pixnum = pixmap1.load(normalimgpath);  //函数返回值为bool
    //如果加载失败返回false,提示加载失败
    if(!pixnum)
    {
        //此时的this,指的是mybutton
        QString pixstr = QString("%1 图片加载失败").arg(this->normalimgpath);
        qDebug()<<pixstr;
        //返回即可
        return;
    }
    
    //正常加载
    //设定加载图片的参数--this是按钮
    //将按钮大小设置为图片大小
    this->setFixedSize(pixmap1.width(),pixmap1.height());
    
    //设置不规则图片格式
    //边界--0px---透明背景
    this->setStyleSheet("QPushButton{border:0px;}");
    
    //设置图片:给按钮添加图片
    this->setIcon(QIcon(":/resour/05.png"));
    
    
    //设置图片大小
    this->setIconSize(QSize(pixmap1.width(),pixmap1.height()));
    
    //利用画家画出来
    //在主窗口
    
}

2.主窗口创建 开始游戏 按钮

暂时还没有弹动的功能

    //7.创建一个自定义类型的按钮
    mybutton* mybutton1 = new mybutton(":/resour/05.png");

    //将按钮添加到对象树上
    mybutton1->setParent(this);

    //移动自定义按钮的位置
    mybutton1->move(this->width()*0.5-mybutton1-
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hskwcy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值