Is it possible to set the opacity of qt widgets?

ε祈祈猫儿з 提交于 2019-12-05 21:09:33

问题


I know that there is a function QWidget::setWindowOpacity(qreal level) but as written in the documentation this does only work for windows.

Is there a way to make widgets that are lying inside layouts opaque too?

What I'm trying to do is an animation where widgets are fading in. I once did that with a preferences-dialog and there it worked.

So do you think there is a way or a work-around to achieve opacity for widgets inside layouts? How would you do that?

Thanks in advance!


回答1:


Just use QGraphicsOpacityEffect in order to achieve this effect.

  • Qt4: http://doc.qt.io/qt-4.8/qgraphicsopacityeffect.html
  • Qt5: http://doc.qt.io/qt-5/qgraphicsopacityeffect.html



回答2:


Well for widgets inside mainwidow appear to have setAutoFillBackground(False) by default.

to make it fade in fadeout u need to to use QGraphicsOpacityEffect along with setAutoFillBackground(True)

a small example: write inside the widget which is called inside the mainwindow

op=QGraphicsOpacityEffect(self)
op.setOpacity(1.00) #0 to 1 will cause the fade effect to kick in
self.setGraphicsEffect(op)
self.setAutoFillBackground(True)



回答3:


SetWindowOpacity works for me in Linux. I used code like this to change window opacity, (value is from 0 to 100):

setWindowOpacity(qreal(value)/100);



回答4:


In Qt5 you can use css to make widgets transparent

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



来源:https://stackoverflow.com/questions/4499488/is-it-possible-to-set-the-opacity-of-qt-widgets

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!