Установить прозрачность кнопок QB в QT C ++ в Linux - PullRequest
1 голос
/ 17 января 2020

Я использую Qt Creator 4.0.2 на основе Qt 5.7.0 (G CC 4.9.1 20140922 (Red Hat 4.9.1-10), 64 бит).

Я показываю изображение на моем виджете и размещение QButtons и QLabels поверх него.

Это выглядит примерно так:

Window with image and button

Я хочу сделать кнопку полупрозрачной. Там нет никакой собственности для этого. Я попробовал ответ, приведенный в другой ветке, как:

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

Но у меня это не сработало. Я также попробовал setStyleSheet("background:transparent;") Но это не сработало.

Пожалуйста, предложите способ сделать это.

Ответы [ 2 ]

2 голосов
/ 17 января 2020

недостаточно установить цвет bg на «прозрачный», вам нужно установить «border-style: outset;»; и ничего больше в главном окне / виджете ...

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

enter image description here

затем:

do:

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

enter image description here

0 голосов
/ 17 января 2020

Установка прозрачного фона для кнопки недостаточно: вам нужно установить некоторые атрибуты для вашего основного виджета, чтобы попросить оконный менеджер разрешить кнопке управлять своим собственным фоном.

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