在 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。
我在我的小部件上显示图像并在其上放置 QButtons 和 QLabels。
看起来像这样:
我想让按钮半透明。它没有任何 属性。我尝试了在另一个线程上给出的答案:
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);
我正在使用基于 Qt 5.7.0 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10),64 位) 的 Qt Creator 4.0.2。
我在我的小部件上显示图像并在其上放置 QButtons 和 QLabels。
看起来像这样:
我想让按钮半透明。它没有任何 属性。我尝试了在另一个线程上给出的答案:
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);