Qt--场景切换

若返回按钮有鼠标按下和释放的效果,就需要重写函数,并且要在最后将事件抛出给父类,主要代码如下

//重写鼠标按下
void MyPushButton::mousePressEvent(QMouseEvent *e)
{
    //如果按下图片路径不为空
    if(this->pressImgPath!="")
    {
        //QPixmap加载图标
        QPixmap pix;
        bool ret = pix.load(pressImgPath);
        if(!ret)
        {
            QString str = QString("图片加载失败 %1").arg(pressImgPath);
            qDebug()<<str;
            return;
        }

        //设置大小
        this->setFixedSize(pix.width(),pix.height());

        //设置不规则图片样式
        this->setStyleSheet("QPushButton{border:0}");

        //设置图标
        this->setIcon(pix);

        //设置图标大小
        this->setIconSize(QSize(pix.width(),pix.height()));
    }
    //点击的响应事件抛给父类
    QPushButton::mousePressEvent(e);
}

//重写鼠标释放
void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    //如果按下图片路径不为空
    if(this->pressImgPath!="")
    {
        //QPixmap加载图标
        QPixmap pix;
        bool ret = pix.load(this->normalImgPath);
        if(!ret)
        {
            QString str = QString("图片加载失败 %1").arg(normalImgPath);
            qDebug()<<str;
            return;
        }

        //设置大小
        this->setFixedSize(pix.width(),pix.height());

        //设置不规则图片样式
        this->setStyleSheet("QPushButton{border:0}");

        //设置图标
        this->setIcon(pix);

        //设置图标大小
        this->setIconSize(QSize(pix.width(),pix.height()));
    }
    //点击的响应事件抛给父类
    QPushButton::mouseReleaseEvent(e);
}

对于场景的切换,一定要分清主次关系,在主场景的头文件中要包含次场景的维护指针,且在主场景中创建出来,然后需要在次场景中写一个信号,在点击返回按钮时emit这个信号。(建议在返回信号时加上延时,否则给按钮做的动态展示无法显示)同时在主场景中持续监听这个信号,若收到信号就将次场景隐藏,主场景显示即可。主要代码如下

connect(backBtn,&MyPushButton::clicked,[=](){

        //延时发送信号
        QTimer::singleShot(500,this,[=](){
            emit this->chooseSceneBack();
        });
    });
//监听选择关卡场景中的 返回按钮自定义信号
    connect(chooseScene,&ChooseLevelScene::chooseSceneBack,[=](){

       chooseScene->hide();
       this->show();
    });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值