Qt QStackWidget实现透明化loading弹窗与结果展示

本文介绍如何使用Qt的QStackWidget创建一个透明的loading弹窗,并且展示了该弹窗的特点,如组件复用、接口调用简单、自定义样式等。通过使用QGraphicsOpacityEffect实现背景透明效果,代码已同步到个人gitlab,可联系作者获取。
摘要由CSDN通过智能技术生成

效果:

特点:

1、组件复用,用于工作环境中作为单例组件加载方式,作用全局任何需要进行loading显示的业务逻辑;

2、接口调用简单,只需要调用loading开始,显示成功页面,显示错误页面;

3、按钮业务逻辑只进行隐藏当前loading加载框,可根据自己需要自定义业务逻辑;

4、样式根据需求自定义,使用QGraphicsOpacityEffect 来实现背景透明;

关键代码:

    pageStackWidget = new QStackedWidget(this);
    QGraphicsOpacityEffect *m_pGraphicsOpacityEffect = new QGraphicsOpacityEffect(this);
    pageStackWidget->setGraphicsEffect(m_pGraphicsOpacityEffect );
    m_pGraphicsOpacityEffect->setOpacity(0.5);

    loadingPage = new QWidget(pageStackWidget);
    completePage = new QWidget(pageStackWidget);
    errorPage = new QWidget(pageStackWidget);


    confirmButton = new QPushButton(completePage);
    confirmButton->setFocusPolicy(Qt::NoFocus);
    confirmButton->setText(tr("OK"));
    confirmButton->resize(80,40);
    completePhotoLabel = new QLabel(completePage);
    completePhotoLabel->resize(80,100);
    completePhotoLabel->move(this->width()/2-completePhotoLabel->width()/2,20);
    confirmButton->move(this->width()/2-confirmButton->width()/2,150);
    completePhotoLabel->setPixmap(QPixmap(":Resource/photo/complete.png"));
    completePhotoLabel->setAlignment(Qt::AlignCenter);

    errorButton = new QPushButton(errorPage);
    errorButton->setText(tr("OK"));
    errorButton->resize(80,40);
    errorPhotoLabel = new QLabel(errorPage);
    errorPhotoLabel->resize(80,100);
    errorPhotoLabel->move(this->width()/2-errorPhotoLabel->width()/2,20);
    errorButton->move(this->width()/2-errorButton->width()/2,150);
    errorPhotoLabel->setPixmap(QPixmap(":Resource/photo/error.png"));
    errorPhotoLabel->setAlignment(Qt::AlignCenter);

    cmovieLabel = new CMoviceLabel(loadingPage);
    pageStackWidget->addWidget(loadingPage);
    pageStackWidget->addWidget(completePage);
    pageStackWidget->addWidget(errorPage);

    pageStackWidget->setGeometry(0,0,320,240);
    loadingPage->setGeometry(0,0,320,240);
    completePage->setGeometry(0,0,320,240);
    errorPage->setGeometry(0,0,320,240);

    cmovieLabel->move(0,0);
    pageStackWidget->setCurrentWidget(loadingPage);

源码同步个人gitlab,联系QQ865915002.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值