Mon Gtk.DrawingArea apparaît uniquement si je l'ajoute en tant que widget à la fenêtre principale. S'il y a un conteneur fixe dans la fenêtre et que j'ajoute DrawingArea au conteneur fixe, je ne vois rien. Mais je sais que le signal de tirage a été appelé lors du débogage.Comment rendre Gtk.DrawingArea visible dans un conteneur Gtk.Fixed, si possible?
Gtk.DrawingArea drawing_area = new Gtk.DrawingArea();
drawing_area.draw.connect ((context) => {
context.set_source_rgba (1, 0, 0, 1);
context.rectangle (25, 25, 100, 100);
context.fill();
return true;
});
// Doesn't work, nothing is visible
fixed.put (drawing_area, 25, 25);
La variable fixe est de type Gtk.Fixed. fixed est le seul widget enfant de la fenêtre principale. Je dois mentionner que si j'ajoute un autre widget Gtk normal à fixer, comme une étiquette, cette étiquette est visible.
Si je, au lieu d'ajouter fixé à ma fenêtre principale, j'ajouter la zone de dessin comme le seul enfant de la fenêtre principale comme dans le code suivant, il affiche
// Works, rectangle is visible
app_window.add (drawing_area);
app_window est de type Gtk.ApplicationWindow.
Est-il possible de le rendre visible tout en étant un enfant de Fixe?
---------- ---------- Modifier
Le Gtk.DrawingArea apparaît maintenant dans le récipient fixe si je mets les demandes de taille pour elle. Comme ça
Gtk.DrawingArea drawing_area = new Gtk.DrawingArea();
drawing_area.width_request = 100;
drawing_area.height_request = 100;
drawing_area.draw.connect ((context) => {
context.set_source_rgba (1, 0, 0, 1);
context.rectangle (0, 0, drawing_area.get_allocated_width(), drawing_area.get_allocated_height());
context.fill();
return true;
});
Je ne sais pas si c'est la bonne façon de procéder. Cela fonctionne bien. Le widget DrawingArea avec le rectangle s'affiche maintenant dans le conteneur fixe. J'écouterai d'autres réponses s'il y a une façon recommandée de s'y prendre.
C'est la bonne façon. Vous devriez l'ajouter comme réponse. – theGtknerd
Compris. Merci. –