2010-05-21 5 views
1

J'écris une application en C et j'ai un GtkLinkButton qui contient un GtkStockItem. Comment puis-je supprimer la boîte de boutons qui apparaît lorsque le pointeur de la souris est allumé et quand je clique dessus?Supprimer le cadre de bouton



EDIT

Merci beaucoup, mais il ne fonctionne pas. Ceci est la sortie:

« Gtk-AVERTISSEMENT **: déposé pour définir le texte de balisage en raison d'une erreur de balisage analyse syntaxique: tag Unknow 'a' sur la ligne 1 car 38

GLib-GObject-AVERTISSEMENT **: gsignal.c: 2267: Sigal activate-link' is invalid for istance 0x8081860'

Gtk-AVERTISSEMENT **: déposé pour définir le texte de balisage en raison d'une erreur de balisage analyse syntaxique: tag Unknow 'a' sur la ligne 1 caractère 38"

j'étudie GTK bibliothèques depuis peu de temps, mais je pense que vous ne pouvez pas utiliser toutes les balises html que vous voulez dans la fonction gtk_label_set_markup() (la balise 'a' en est une). Je comprends que vous ne pouvez utiliser que le langage de balisage de texte Pango (http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html), donc vous ne pouvez pas utiliser le tag 'a' ou pas directement.

Répondre

2
gtk_button_set_relief(GTK_BUTTON(link_button), GTK_RELIEF_NONE); 

Addenum:

Oui, vous avez raison! Il n'y a aucun moyen de laisser un GtkButton se comporter de cette façon (et à mes yeux, GTK_RELIEF_HALF et GTK_RELIEF_NORMAL semble le même). Vous pouvez utiliser GtkLabel à la place. En C, ce serait quelque chose comme:

label = gtk_label_new(NULL); 
gtk_label_set_markup(GTK_LABEL(label), "<a href='http://www.gtk.org'>GTK+ home</a>"); 

Exemple:

Je vraiment déteste faire vos devoirs ... De toute façon, je me sens bien, voici donc un travail entièrement Exemple:

/* 
gcc `pkg-config --cflags gtk+-2.0` link.c \ 
    -o link `pkg-config --libs gtk+-2.0` 
*/ 
#include <gtk/gtk.h> 

static gboolean 
my_dialog(GtkWindow *top_level) 
{ 
    GtkWidget *dialog = gtk_message_dialog_new(top_level, 
               GTK_DIALOG_MODAL, 
               GTK_MESSAGE_INFO, 
               GTK_BUTTONS_CLOSE, 
               "This is a test message"); 

    gtk_dialog_run(GTK_DIALOG(dialog)); 
    gtk_widget_destroy(dialog); 

    return TRUE; 
} 

int 
main(int argc, char *argv[]) 
{ 
    GtkWidget *window, *label; 

    gtk_init(&argc, &argv); 

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 

    label = gtk_label_new(NULL); 
    gtk_label_set_markup(GTK_LABEL(label), 
         "<a href='http://www.gtk.org'>GTK+ web site</a>"); 
    g_signal_connect_swapped(label, "activate-link", 
          G_CALLBACK(my_dialog), window); 
    gtk_container_add(GTK_CONTAINER(window), label); 

    gtk_widget_show_all(window); 
    gtk_main(); 

    return 0; 
} 
+0

Je l'ai déjà utilisé, mais cela ne fonctionne pas. – stdio

+0

Je dois ouvrir une fenêtre GtkDialog avec le clic. Si j'utilise GtkLabel, comment puis-je faire cela? – stdio

+0

Avec un peu d'initiative: http://library.gnome.org/devel/gtk/stable/GtkLabel.html#GtkLabel-activate-link – giassai

Questions connexes