我正在用C编写应用程序,我有一个包含GtkStockItem的GtkLinkButton。如何删除鼠标指针打开时和单击时出现的按钮框?
修改
非常感谢,但它不起作用。这是输出:
“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'。
答案 0 :(得分:2)
gtk_button_set_relief(GTK_BUTTON(link_button), GTK_RELIEF_NONE);
<强> Addenum:强>
是的,你是对的!没有办法让GtkButton
以这种方式行事(对我而言,GTK_RELIEF_HALF
和GTK_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;
}