12

関数があることは知っていますQWidget::setWindowOpacity(qreal level)が、ドキュメントに書かれているように、これはWindowsでのみ機能します。

レイアウト内にあるウィジェットも不透明にする方法はありますか?

私がやろうとしているのは、ウィジェットがフェードインしているアニメーションです。私はかつて、設定ダイアログを使用してそれを実行しましたが、そこで機能しました。

では、レイアウト内のウィジェットの不透明度を達成する方法または回避策があると思いますか?どのようにそれをしますか?

前もって感謝します!

4

5 に答える 5

12

この効果を実現するには、QGraphicsOpacityEffectを使用するだけです。

于 2011-01-12T14:46:10.277 に答える
9

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)
于 2015-03-21T07:46:12.440 に答える
3

SetWindowOpacityLinuxで動作します。このようなコードを使用してウィンドウの不透明度を変更しました(値は0〜100です)。

setWindowOpacity(qreal(value)/100);
于 2010-12-21T14:22:39.883 に答える
1
mywidget.setStyleSheet('background-color:rgba(r, g, b, alpha);') 

私のために働く

于 2020-03-17T04:03:17.220 に答える
0

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

ここに画像の説明を入力してください

于 2018-01-01T18:51:14.080 に答える