Domanda

So che c'è un QWidget::setWindowOpacity(qreal level) funzione, ma come scritto nella documentazione che fa solo il lavoro per le finestre.

C'è un modo per rendere widget che giacciono layout interno opaco troppo?

Quello che sto cercando di fare è un'animazione in cui i widget sono dissolvenza. Una volta ho fatto con un preferenze-finestra e là ha funzionato.

Quindi pensi che ci sia un modo o in un work-around per ottenere l'opacità per i widget all'interno di layout? Come hai fatto?

Grazie in anticipo!

È stato utile?

Soluzione

Basta usare QGraphicsOpacityEffect al fine di ottenere questo effetto.

Altri suggerimenti

Bene per i widget all'interno mainwidow sembrano avere setAutoFillBackground(False) per impostazione predefinita.

per fare svanire in dissolvenza u bisogno di utilizzare per QGraphicsOpacityEffect con setAutoFillBackground(True)

un piccolo esempio: scrittura all'interno del widget di che si chiama all'interno del MainWindow

op=QGraphicsOpacityEffect(self)
op.setOpacity(1.00) #0 to 1 will cause the fade effect to kick in
self.setGraphicsEffect(op)
self.setAutoFillBackground(True)

SetWindowOpacity funziona per me in Linux. Ho usato il codice come questo per la finestra modifica l'opacità, (il valore è da 0 a 100):

setWindowOpacity(qreal(value)/100);

In QT5 è possibile utilizzare i CSS per fare i widget trasparenti

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

entrare descrizione dell'immagine qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top