在 Linux 的 QT C++ 中设置 QButtons 的透明度
Posted
技术标签:
【中文标题】在 Linux 的 QT C++ 中设置 QButtons 的透明度【英文标题】:Set transparency of QButtons in QT C++ in Linux 【发布时间】:2020-01-17 05:02:01 【问题描述】:我正在使用基于 Qt 5.7.0 的 Qt Creator 4.0.2(GCC 4.9.1 20140922(Red Hat 4.9.1-10),64 位)。
我在我的小部件上显示一个图像,并在其上放置 QButtons 和 QLabels。
看起来像这样:
我想让按钮半透明。它没有任何财产。我尝试在另一个线程上给出的答案为:
ui->button->setStyleSheet("background-color: rgba(255, 255, 255, 50);");
但这对我不起作用。我也试过setStyleSheet("background:transparent;")
但它没有用。
请提出一种方法。
【问题讨论】:
如果您使用的是小部件应用程序。为什么不使用 interface(forms->mainwindow.ui) 属性部分将其更改为透明。或者你可以查看this post @YunusTemurlenk 就像我说的,“它没有任何属性”将 QButton 设置为透明。此外,您分享的链接讨论了更改背景颜色,而不是透明度。 如果您将背景颜色更改为“透明”,它将使其透明。在 qt 中,“透明”也是一种颜色。background-color: transparent
让它变黑。
【参考方案1】:
设置bg颜色为“透明”是不够的,需要设置“border-style:outset;”主窗口/小部件中没有其他内容...
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);
【讨论】:
它按预期工作。我们可以设置按钮的不透明度,可能是任何颜色吗?因为我的主要问题是“我想让按钮半透明。” 知道了。我只需要添加background: rgba(0, 0, 0, 0.5);
。接受你的回答。【参考方案2】:
为按钮设置透明背景是不够的:您必须为主窗口小部件设置一些属性,以便让窗口管理器让按钮管理自己的背景。
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();
【讨论】:
以上是关于在 Linux 的 QT C++ 中设置 QButtons 的透明度的主要内容,如果未能解决你的问题,请参考以下文章
在 Linux 上的 Eclipse C++ 中设置 CPLEX
在 Linux 中使用 Qt 的 Close() 文件描述符
如何在 Linux 的 QTCreator 中使用 dlopen 打开的共享库中设置断点