2010-08-18 20 views
0

J'ai un GtkLabel et un GtkDrawingArea dans une VBox, je veux centrer l'étiquette par rapport à une coordonnée X de la GtkDrawingArea (qui est en dessous de l'étiquette dans la VBox), comment Je dis à GTK de centrer cette étiquette par rapport à ce point d'ancrage? Ce point devrait être le centre de l'étiquette.Aligner un GtkLabel par rapport à un GtkDrawingArea

Répondre

0

J'ai résolu mon problème en utilisant gtk_alignment_new afin de créer un alignement centré, puis j'ai utilisé gtk_alignment_set_padding pour remplir le bon remplissage avec la quantité de remplissage nécessaire pour s'aligner avec une valeur arbitraire de l'axe x. Merci pour les réponses!

2

Étant donné que votre GtkLabel et GtlDrawingArea sont à l'intérieur d'un GtkVBox, leurs positions sont les unes par rapport aux autres. Ce qui suit devrait définir l'alignement de l'étiquette au centre:

gtk_misc_set_alignment(GTK_MISC(label), 0.5F /*X*/, 0.5F /*Y*/); 

Si vous ne voulez pas centrer le texte de la GtkLabel, vous pouvez utiliser un widget GtkAlignment:

GtkWidget* helper; 

helper = gtk_alignment_new(0.5F /*X*/, 0.5F /*Y*/, 0.0F, 0.0F); 
gtk_container_add(GTK_CONTAINER(helper), label); 

gtk_box_pack_start_defaults(GTK_BOX(vbox), helper); 

Vous pouvez le réaligner à nouveau en appelant la fonction gtk_alignment_set.

+0

Voir la partie où je dis "Je veux centrer l'étiquette par rapport à une coordonnée X de la GtkDrawingArea", je ne veux pas que l'étiquette soit centrée avec le GtkDrawingArea et oui centrée contre un point arbitraire de l'axe x de la GtkDrawingArea. – Tarantula

+0

@Tarantula: J'ai édité ma réponse, maintenant c'est peut-être la réponse, sinon c'est ma faute si je ne comprends pas votre méchant. –

+0

Merci d'avoir répondu à PC2st, je l'ai résolu en utilisant le gtk_alignment_set_padding, regardez la réponse. – Tarantula