QT界面开发-游戏案例

本文详细介绍了使用QT进行游戏界面开发的过程,包括设计登录主页面、切换游戏界面、选择关卡按钮的实现以及打包发布的步骤。在主页面中,自定义了按钮类并实现了弹跳效果和音乐播放功能。在游戏界面切换时,通过信号和槽机制优化了页面过渡。此外,还探讨了如何使用windeployqt工具和第三方软件进行程序打包发布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录


目录

一、设计登录主页面

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-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hskwcy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值