QT界面开发-游戏案例

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

目录


目录

一、设计登录主页面

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
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一个经典的Qt界面开发案例是使用Qt Widgets创建一个简单的对话框和主窗口。在这个案例中,首先需要在main.cpp文件中包含"dialog.h"和"mainwindow.h"头文件,并创建一个QApplication对象。然后,创建一个Dialog对象和一个MainWindow对象。接下来,可以根据需要设置对话框和主窗口的属性和布局。最后,通过调用exec()函数来运行应用程序并显示对话框和主窗口。 另一个经典的Qt界面开发案例是使用QML创建一个简单的界面。在这个案例中,首先需要新建一个项目,并在项目中添加一个QML文件。可以通过右键单击项目,选择"add new",然后选择"QML File",并填写文件名和路径。创建的QML文件将采用.qml作为文件格式后缀。接下来,可以在QML文件中编写界面的布局和逻辑。 还有一个经典的Qt界面开发案例是使用Qt Widgets创建一个具有背景透明效果的窗口。在这个案例中,首先需要新建一个Qt Widget应用,并选择QWidget作为基类。然后,向项目中添加一个背景透明的png图片。接下来,在widget.cpp文件中添加必要的头文件,并可以使用QPixmap、QBitmap和QPainter来设置窗口的背景透明效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Qt的6个简单小案例](https://blog.csdn.net/weixin_43624626/article/details/116529518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【QtQt Creater界面开发案例(qml程序)——旋转的风车](https://blog.csdn.net/See_Star/article/details/113726278)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hskwcy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值