【发布时间】:2015-07-21 01:53:46
【问题描述】:
我正在从我的主窗口打开一个模态窗口,我的兴趣是使背景变暗,以便顶部窗口完全可见,但主窗口看起来像“阴影”一样黑暗。
【问题讨论】:
我正在从我的主窗口打开一个模态窗口,我的兴趣是使背景变暗,以便顶部窗口完全可见,但主窗口看起来像“阴影”一样黑暗。
【问题讨论】:
您可以在主窗口上显示一些半透明的小部件,它会产生阴影效果。
例如,这样的小部件。
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 中更改画笔来调整阴影颜色和透明度。 希望这是你想要的效果。
【讨论】:
这取决于窗口管理器来添加这样的效果。
例如,KWin 和 Mutter 都有自己处理对话框的方法。 KWin 确实遮蔽了主窗口,我认为 Mutter 也这样做了,并带有一些额外的效果。
在 Mac OS 中,模态窗口已经具有特殊的属性,可以将其重点放在其专利窗口的关系上。
windows 处理这个问题的方式是强制关注我认为的模式。但这确实是窗口管理器的工作,取决于用户的喜好来选择应该激活的效果。
【讨论】: