是否可以设置 qt 小部件的不透明度?

发布于 2024-10-08 11:39:38 字数 233 浏览 7 评论 0原文

我知道有一个函数 QWidget::setWindowOpacity(qreal level) 但正如文档中所写,它仅适用于 Windows。

有没有办法使布局内的小部件也变得不透明?

我想做的是一个小部件淡入的动画。我曾经用一个首选项对话框做到了这一点,并且它起作用了。

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

提前致谢!

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!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

甜扑 2024-10-15 11:39:38

对于 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)

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)
无戏配角 2024-10-15 11:39:38

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

setWindowOpacity(qreal(value)/100);

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);
影子的影子 2024-10-15 11:39:38
mywidget.setStyleSheet('background-color:rgba(r, g, b, alpha);') 

为我工作

mywidget.setStyleSheet('background-color:rgba(r, g, b, alpha);') 

works for me

弥枳 2024-10-15 11:39:38

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

在此处输入图像描述

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

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文