删除按钮框

时间:2010-05-21 23:12:15

标签: gtk

我正在用C编写应用程序,我有一个包含GtkStockItem的GtkLinkBut​​ton。如何删除鼠标指针打开时和单击时出现的按钮框?



修改

非常感谢,但它不起作用。这是输出:

“Gtk-WARNING **:由于错误解析标记而设置为从标记设置文本:第1行char 38上的未知标记'a'

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

Gtk-WARNING **:由于错误解析标记而设置为从标记设置文本:第1行char 38上的未知标记'a'

我很少学习GTK库,但我认为你不能在gtk_label_set_markup()函数中使用你想要的所有html标签(标签'a'是一个)。 我了解您只能使用Pango文本标记语言(http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html),因此您不能直接使用标记'a'。

1 个答案:

答案 0 :(得分:2)

gtk_button_set_relief(GTK_BUTTON(link_button), GTK_RELIEF_NONE);

<强> Addenum:

是的,你是对的!没有办法让GtkButton以这种方式行事(对我而言,GTK_RELIEF_HALFGTK_RELIEF_NORMAL看起来是一样的。)

您可以使用GtkLabel代替。在C中,这将是:

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

示例:

真的讨厌做你的作业...无论如何我感觉很好,所以这里是一个完全有效的例子:

/*
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;
}