今天在开发工作中遇到一个需求,在跳出dialog的时候,需要把主界面遮住,只能看到隐约一点点的样子,然后关掉dialog的时候,就恢复主界面正常显示,本项目界面是QT实现的,后端是C++。
下面看一下我的实现吧!
Main.h
QWidget* m_pMark;
Main.cpp
connect(ui->TestButton, &QAbstractButton::clicked, this, [=]() {
m_pMark = new QWidget(this);
m_pMark->setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);
m_pMark->setWindowOpacity(0.75);
m_pMark->setStyleSheet("background-color:black;");
m_pMark->setFixedSize(this->width(), this->height());
m_pMark->show();
TestDialog s(this);
connect(&s, &TestDialog::markChanged, this, [=] {
m_pMark->hide();
delete m_pMark;
});
s.exec();
});
TestDialog.h
signals:
void markChanged();
TestDialog.cpp
void TestDialog::onCloseButton()
{
emit markChanged();
emit onClosing();
this->close();
}
好啦,以上就是实现改遮挡效果的主要代码啦,一些简单方法就不全都贴出来啦,像oncloseButton()方法之类的,小伙伴们就自己完善吧~