效果:
特点:
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.