2010-06-05 6 views
3

J'utilise une disposition verticale (QVBoxLayout) pour gérer les boutons. Je voudrais faire sa couleur d'arrière-plan comme 50% transparent noir. C'est possible ?QT Transparent Layout

sw

Répondre

2

Ahem ... ça a été un moment que je Qt, mais pour autant que je sache, QVBoxLayout n'a pas de couleur de fond, donc pas, il est impossible. La mise en page n'est pas un widget et elle n'est pas peinte du tout, elle gère uniquement les tailles de widgets enfants.

Si vous souhaitez créer une mise en page en couleur, vous devrez probablement créer un widget avec la couleur de votre choix, puis associer QVBoxLayout à ce widget. Il deviendra plus amusant si vous voulez que la couleur des enfants de la mise en page soit affectée par la couleur du parent de QVBoxLayout, mais je pense que la démo "Embedded Dialogs" de la démo Qt4 peut vous donner une idée de comment cela peut être fait .

4

Selon l'endroit où vous voulez la frontière de la zone transparente, vous devez regrouper les boutons dans un widget (comme sigterm dit) et vous pouvez assigner une couleur soit via la palette

QPalette palette = widget->palette(); 
palette.setColor(QPalette::Window, QColor(100,100,100,100)); 
widget->setPalette(palette); 

ou de l'utilisation une feuille de style

widget->setStylesheet("QWidget{background-color: rgba(100,100,100,100);}"; 

la feuille de style a l'avantage que vous pouvez définir le style de votre demande tous d'un endroit qui est pas dans le code et définir une large application via la feuille de style QApplication::setStylesheet(QString)

dix