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

效果:

Qt QStackWidget实现透明化loading弹窗与结果展示_第1张图片

特点:

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.

你可能感兴趣的:(Qt,组件扩展开发合集,qt,数据库,开发语言)