Existe-t-il un moyen de Gtk + pour empiler un widget au-dessus d'un autre - sans compter GtkFixed? GtkFixed ne fonctionne pas bien pour deux raisons: 1) J'ai besoin de l'ordre Z, et 2) J'ai besoin d'un widget pour étirer et remplir l'espace fourni.Empiler des widgets dans Gtk +
Répondre
Je ne pense pas qu'il y ait un conteneur approprié dans GTK standard. Je sous-classerais Gtk :: Fixe ... c'est toujours le plus proche que vous pouvez obtenir, et si vous utilisez gtkmm alors le sous-classement ne devrait pas être très difficile¹. Ensuite, vous pouvez contrôler les dimensions de tous les widgets, en étirant un enfant sélectionné pour remplir l'espace.
Pour contrôler l'axe Z, vous devrez probablement manipuler les fenêtres X du widget - vérifiez la documentation GDK sur le sujet de Windows GDK². Je me souviens que dans PyGTK chaque widget a la propriété gtk.Widget.window, je suppose que la même chose est pour gtkmm. Cela suppose que tous vos widgets enfants ont des fenêtres X, donc f.e. vous devrez envelopper Gtk :: Label dans Gtk :: EventBox.
¹ http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/chapter-customwidgets.html
Merci. J'espérais que cela serait fourni par Gtk +. – c4757p
J'ai eu cette question exacte à l'aide d'un Gtk :: fixe (en fait gtk.Fixed - pygtk - mais je pense qu'il est tout de même en dessous) et j'ai pu pour le manipuler assez facilement en manipulant la fenêtre de chaque widget. Dans mon cas, les widgets sont déjà des instances d'EventBox, et je devais juste m'assurer que celle que je traînais était en haut, sinon elle glissait sous d'autres, ce qui me paraissait tout à fait faux. La solution était aussi simple que d'appeler "widget.window.raise_()" pour élever la fenêtre sous-jacente du widget lorsque le widget a été cliqué pour commencer le glisser.
Donc, je ne fais que réaffirmer que la réponse précédente fonctionne, mais je voulais souligner que c'est plutôt facile. Il semble que vous deviez créer des EventBox pour contenir vos widgets, mais après cela, cela devrait fonctionner.
Vous pouvez voir le code que je travaillais sur au http://github.com/divegeek/BlockHead
- 1. Empilement de widgets GTK +
- 2. GTK Liste avec des images et du texte et d'autres widgets
- 3. Gtkmm - "Gtk :: DrawingArea" dans "Gtk :: ScrolledWindow"?
- 4. Client Twitter GTK
- 5. Widgets dans JAVA
- 6. gtk widget composite focus
- 7. Attraper l'événement de défilement dans gtk #
- 8. Utiliser FileChooserButton dans GTK +
- 9. Détruire Windows dans GTK #
- 10. Dans GTK, existe-t-il un moyen facile de mettre à l'échelle tous les widgets d'une quantité arbitraire?
- 11. fichiers d'en-tête dans les sous-répertoires (par exemple gtk/gtk.h vs gtk-2.0/gtk/gtk.h)
- 12. Partager des widgets entre PyQT et Boost.Python
- 13. Comment "empiler" un graphique à barres Silverlight?
- 14. Compiler C/GTK dans Eclipse
- 15. VerticalSplitPanel n'affiche pas les widgets dans GWT
- 16. Windows.Forms et gtk # interopérabilité?
- 17. Widgets sur une application web
- 18. Mise à l'échelle d'une image dans GTK
- 19. GTK # événement de souris dans la zone de dessin
- 20. Comment puis-je empiler un nombre inconnu de répéteurs ASP.NET?
- 21. GTK # pièges communs
- 22. presses clés GTK + (gtkD)
- 23. Animations fluides utilisant GTK +
- 24. Python GTK MVC
- 25. Implémentation GTK de MessageBox
- 26. GTK + GTkStatusIcon ne fonctionne pas dans Win32
- 27. Comment obtenir "natif" chercher des widgets WPF sur Windows XP?
- 28. Préférences des widgets de tableau de bord persistants
- 29. Enchaînement Tk :: BrowseEntry widgets ensemble
- 30. Aide pour les widgets flex
Vous voulez juste afficher un widget dans un endroit donné à temps, l'espace de remplissage, ou quelque chose de plus complexe? – liori
Je souhaite afficher un widget remplissant tout l'espace, puis un autre sur un emplacement fixe, tous deux visibles en même temps. – c4757p
De nos jours, oui, il y a précisément un widget qui permet le contrôle de l'ordre-Z et de l'alignement: ['GtkOverlay'] (https://developer.gnome.org/gtk3/stable/GtkOverlay.html). –