我知道有一个功能 QWidget::setWindowOpacity(qreal level) 但是,正如文档中所写的,这仅适用于Windows。

是否有一种方法可以制造出内部布局不透明的小部件?

我要做的是一个动画,小部件正在逐渐消失。我曾经用偏好式拨号仪做到这一点,并且在那里起作用。

那么,您认为有一种方法或工作能力可以实现布局内部的小部件的不透明度吗?你会怎么做?

提前致谢!

有帮助吗?

解决方案

只需使用Qgraphicsopacity效果即可实现此效果。

其他提示

在Mainwidow内部的小部件似乎有 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)

SetWindowOpacity 在Linux中为我工作。我使用这样的代码来更改窗口不透明度(值为0到100):

setWindowOpacity(qreal(value)/100);

在QT5中,您可以使用CSS使小部件透明

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();
}

enter image description here

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top