我有一个 Qt 项目,我在其中使用 QGraphicsView 框架,而且我在场景中有弹出窗口。(QDialogs)
当有人单击某个按钮时,会出现一个弹出窗口,我正在使用该.exec()
方法调用它,而不是.show()
使其成为活动的。我还想给它一个视觉效果,就像灯箱为 html 页面提供的那样,所以对于用户来说,背景窗口不会通信也是很明显的。您知道使其工作的任何简单解决方案吗?还是很难在 Qt 中实现?编辑:我不知道这是否明显,但它是桌面应用程序,而不是 Web 应用程序。
只需在具有自定义背景和透明度的必要区域上创建 QFrame。对于动画效果,您可以使用 QPropertyAnimation + QGraphicEffects 和其他来自 qt 动画框架的东西。
现在我找到了另一种方法来完成我想要的。像这样:
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();
我在我的弹出窗口小部件的构造函数的开头这样做,所以它在绘制我的弹出窗口之前被绘制,所以它将以正确的顺序显示。