• 欢迎访问1024小神,一个只会Python的程序猿不是一个好司机
  • 有什么想对我说的可以在留言板里给我留言哦~
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏1024小神吧

qt 翻金币案例关卡选择页面

C other 1024小神 2年前 (2020-08-30) 726次浏览 0个评论

代码:

#include "choosepan.h"
#include <QPainter>
#include <QLabel>
#include <QDebug>

choosePan::choosePan(QWidget *parent) : QMainWindow(parent)
{
    setWindowTitle("请选择关卡");
    setFixedSize(320, 588);

    // 将按钮变量赋值为一个返回按钮
    backbut = new myButton(":/resource/BackButton.png");
    backbut->setParent(this);
    backbut->move(this->width() - backbut->width(), this->height() - backbut->height());
    // 链接返回按钮
    connect(backbut, &QPushButton::clicked, [=](){
        emit this->backPress();
    });

    // 创建关卡选择按钮
    for (int i=0; i< 20; i++) {
        myButton * menubut = new myButton(":/resource/LevelIcon.png");
        menubut->setParent(this);
        menubut->move(25 + i%4 * 70, 130 + i/4 *70);
        // 创建一个lable显示关卡数字
        QLabel * menulable = new QLabel;
        menulable->setParent(this);
        menulable->setFixedSize(menubut->width(), menubut->height());
        menulable->setText(QString::number(i+1));
        menulable->move(25 + i%4 * 70, 130 + i/4 *70);
        // 设置文字对齐方式
        menulable->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
        // 监听每个按钮的点击事件
        connect(menubut, &QPushButton::clicked, [=](){
            QString pressMenu = QString("你选择关卡是%1").arg(i+1);
            qDebug() << pressMenu;
        });
        // 设置label标签的穿透事件,不然的话按钮被label盖住了,就没有效果
        menulable->setAttribute(Qt::WA_TransparentForMouseEvents);
    }

}


void choosePan::paintEvent(QPaintEvent *){
    // 创建一个画家对象
    QPainter painter(this);
    painter.drawPixmap(rect(),QPixmap(":/resource/PlayLevelSceneBg.png"));

};


如有失效,请留言告知丨转载请注明原文链接:qt 翻金币案例关卡选择页面
点赞 (2)

您必须 登录 才能发表评论!