我从主窗口打开一个模态窗口,我感兴趣的是让背景变暗,这样顶部的窗口就完全可见,但是主窗口看起来很暗,就像在"阴影中一样。
答案 0 :(得分:2)
你可以在主窗口上显示一些半透明的小部件,它会产生阴影效果。
例如,这样的小部件。
class Overlay : public QWidget
{
public:
Overlay(QWidget *parent) {
setPalette(Qt::transparent);
setAttribute(Qt::WA_TransparentForMouseEvents);
}
protected:
void paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(QBrush(QColor(0,0,0, 150)));
painter.setPen(Qt::NoPen);
painter.drawRect(rect());
}
};
然后创建此小部件,调整大小并显示:
overlay_.reset(new Overlay(this));
overlay_->resize(size());
overlay_->setVisible(true);
您可以通过更改paintEvent中的画笔来使用阴影颜色和透明度。 希望这是你所希望的效果。
答案 1 :(得分:0)
这取决于窗口管理器添加这样的效果。
例如,KWin和Mutter都有办法处理对话框。 KWin确实遮住了主窗口,我认为Mutter也做了一些额外的效果。
在Mac OS中,模态窗口已经具有特殊属性,使其专注于其专利窗口的关系。
Windows处理这个问题的方法是强调关注我认为的模态。但它确实是窗口管理员的工作,取决于用户选择应该激活什么效果的偏好。