我知道有一个函数QWidget::setWindowOpacity(qreal level)
,但是根据文档所述,这仅适用于窗口。
是否有办法使位于布局内的小部件也不透明?
我正在尝试制作一个动画,其中小部件正在淡入。 我曾经在偏好对话框中使用过这种方法,那里它起作用了。
因此,您认为有没有办法或解决方法可以使布局内的小部件不透明?您将如何做到这一点?
提前谢谢!
我知道有一个函数QWidget::setWindowOpacity(qreal level)
,但是根据文档所述,这仅适用于窗口。
是否有办法使位于布局内的小部件也不透明?
我正在尝试制作一个动画,其中小部件正在淡入。 我曾经在偏好对话框中使用过这种方法,那里它起作用了。
因此,您认为有没有办法或解决方法可以使布局内的小部件不透明?您将如何做到这一点?
提前谢谢!
只需使用QGraphicsOpacityEffect即可实现此效果。
在主窗口中,小部件似乎默认使用setAutoFillBackground(False)
。
要实现淡入淡出效果,必须使用QGraphicsOpacityEffect
和setAutoFillBackground(True)
。
以下是一个小例子:在被称为主窗口内的小部件中编写代码。
op=QGraphicsOpacityEffect(self)
op.setOpacity(1.00) #0 to 1 will cause the fade effect to kick in
self.setGraphicsEffect(op)
self.setAutoFillBackground(True)
setAutoFillBackground
设置在中央窗口的子控件上对我起了作用:现在小部件的不透明效果可以正常工作了。有什么想法为什么需要设置它? - alisianoiSetWindowOpacity
在Linux中可以使用。我使用了类似下面的代码来改变窗口透明度(值从0到100):
setWindowOpacity(qreal(value)/100);
mywidget.setStyleSheet('background-color:rgba(r, g, b, alpha);')
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDialog dialog;
dialog.setStyleSheet(QLatin1String("#LolButton{color: transparent; background-color: transparent;}"));
QPushButton button(&dialog);
button.setText("Button");
button.setObjectName(QStringLiteral("LolButton"));
QObject::connect(&button,&QPushButton::clicked,[](){
QMessageBox msg;
msg.setText("LolButton omg");
msg.exec();
});
dialog.show();
return a.exec();
}