E 'possibile impostare l'opacità di oggetti Qt?
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!
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();
}