Je construis une interface utilisateur dans Qt 5.9 qui doit fonctionner sur un écran X11. J'essaie d'ajouter des ombres portées à mes fenêtres de dialogue - mais elles ne fonctionnent pas sur X11.Comment créer un Qt Drop Shadow sans utiliser de transparents? (Parce que le gestionnaire de fenêtres ne le supporte pas)
L'approche que je prends est de la réponse de zeFree dans This Question. (Mettez tout dans la fenêtre dans un widget, définissez la fenêtre translucide, et créer un effet dropshadow sur le widget).
setAttribute(Qt::WA_TranslucentBackground); //enable Window to be transparent
QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();
effect->setBlurRadius(5);
ui->widget->setGraphicsEffect(effect);
Il fonctionne très bien dans ma RedHat vm:
Mais quand j'envoie à l'affichage X11 I, il semble que la transparence est pas pris en charge, et je reçois l'ombre sur noir à la place:
ma question est: y at-il un moyen de faire mes Dialogs projeter une ombre sur mon fenêtre principale au lieu de leur propre arrière-plan (transparent)? Mon application sera en plein écran sur l'écran X11, donc je n'ai pas besoin de m'inquiéter des effets d'ombre en dehors de la fenêtre.
Toute réponse qui me donne un moyen propre d'obtenir un effet d'ombre portée sur cet écran X11 sera acceptée.
Merci pour l'entrée. Avez-vous des références ou des exemples pour les approches qui n'utilisent pas de transparents? Je considérais la possibilité de créer un widget sur ma fenêtre principale sous le dialogue. Ensuite, je devrais le cacher quand la boîte de dialogue disparaît. Je pense que pour cette application, je peux éviter le besoin de déplacer le dialogue - ce qui pourrait simplifier le scénario. – spickesj
Je ne sais pas, mais son linux, il y aura probablement un moyen de copier les pixels du framebuffer x. Faites un peu de recherche. – dtech