如何在Qt中获得类似行为的“灯箱”

时间:2013-03-28 10:36:27

标签: qt lightbox2

我有一个Qt项目,我正在使用QGraphicsView框架,我也有弹出窗口。 (QDialogs)

当有人点击某个按钮时,会出现一个弹出窗口,我正在使用.exec()方法而不是.show()来调用它,使其成为活动窗口。另外我想给它一个像lightbox提供的html页面的视觉效果,所以对于用户来说显而易见的是,后台窗口不会进行通信。你知道任何简单的解决方案吗?或者在Qt中难以实现? 编辑:我不知道它是否显而易见,但它是一个桌面应用程序,而不是一个Web应用程序。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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();

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