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
0
A
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
.
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
@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. –
Merci d'avoir répondu à PC2st, je l'ai résolu en utilisant le gtk_alignment_set_padding, regardez la réponse. – Tarantula