0

我有一个 Qt 项目,我在其中使用 QGraphicsView 框架,而且我在场景中有弹出窗口。(QDialogs)

当有人单击某个按钮时,会出现一个弹出窗口,我正在使用该.exec()方法调用它,而不是.show()使其成为活动的。我还想给它一个视觉效果,就像灯箱为 html 页面提供的那样,所以对于用户来说,背景窗口不会通信也是很明显的。您知道使其工作的任何简单解决方案吗?还是很难在 Qt 中实现?编辑:我不知道这是否明显,但它是桌面应用程序,而不是 Web 应用程序。

4

2 回答 2

0

只需在具有自定义背景和透明度的必要区域上创建 QFrame。对于动画效果,您可以使用 QPropertyAnimation + QGraphicEffects 和其他来自 qt 动画框架的东西。

于 2013-03-28T10:51:37.327 回答
0

现在我找到了另一种方法来完成我想要的。像这样:

QWidget* mytranswidget = new QWidget(mybgwidget);
mytranswidget->setStyleSheet( "background:transparent; background-color:rgba(0,0,0‌​,95)");
mytranswidget->setWindowFlag(Qt::FramelessWindowHint);
mytranswidget->setGeometry(mybgwidget->rect());
mytranswidget->show();

我在我的弹出窗口小部件的构造函数的开头这样做,所以它在绘制我的弹出窗口之前被绘制,所以它将以正确的顺序显示。

于 2013-03-28T14:01:50.937 回答