当我们想弹出一个提示框时,总是想突出显示他,这时候一个可行的解决方法是增加遮罩。效果如下
我们想点击导出按钮后,导出对话框可以突出显示,在响应导出的槽函数中实现
connect(exportDlg,&QDialog::clicked,this,[=](){
QScopedPointer<QWidget>shadow(new QWidget(this));
shadow->setFixedSize(size());
QPalette pal(shadow->palette());
pal.setColor(QPalette::Background, QColor(0, 0, 0, 90));
shadow->setAutoFillBackground(true);
shadow->setPalette(pal);
shadow->stackUnder(this);
shadow->setVisible(true);
//下面和遮罩无关
QScopedPointer<ExportDlg>exportDlg(new ExportDlg);
QPoint poi;
poi.setX(pos().x() + (rect().width() - exportDlg->rect().width()) / 2);
poi.setY(pos().y() + (rect().height() - exportDlg->height()) / 2);
exportDlg->move(poi);
exportDlg->exec();
};
需要注意:
1.由于设置的shdow的父窗口为this,所以父窗口有backgroud-color的设置时,会继承。
2.shadow为智能指针,所以要是不阻塞的话会立刻消失