在 Linux 中设置 QT C++ 中 QButtons 的透明度

Set transparency of QButtons in QT C++ in Linux

我正在使用基于 Qt 5.7.0 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10),64 位) 的 Qt Creator 4.0.2。

我在我的小部件上显示图像并在其上放置 QButtonsQLabels

看起来像这样:

我想让按钮半透明。它没有任何 属性。我尝试了在另一个线程上给出的答案:

ui->button->setStyleSheet("background-color: rgba(255, 255, 255, 50);");

但这对我不起作用。我也试过setStyleSheet("background:transparent;") 但是没用。

请建议一种方法。

为按钮设置透明背景是不够的:您必须为主窗口小部件设置一些属性才能请求 window 管理器让按钮管理自己的背景。

QWidget* w = new QWidget();

QPushButton* btn = new QPushButton("Click me", w);
btn->setStyleSheet("background-color: rgba(255, 255, 255, 50);");

w->setWindowFlags(Qt::FramelessWindowHint); // Do not display the window frame
w->setAttribute( Qt::WA_TranslucentBackground, true ); // Do not display the default background

w->show();

将背景颜色设置为 "transparent" 是不够的,您需要设置 "border-style: outset;" 并且主要 window/widget...

ui->pushButton_7->setStyleSheet("background-color: transparent; style: outset;");

然后:

做:

ui->pushButton_7->setStyleSheet("background-color: #FF0011");
auto qgoEffect = new QGraphicsOpacityEffect(this);
qgoEffect->setOpacity(0.15);
ui->pushButton_7->setGraphicsEffect(qgoEffect);
ui->pushButton_7->setAutoFillBackground(true);