Удалить кнопку - PullRequest
       10

Удалить кнопку

1 голос
/ 22 мая 2010

Я пишу приложение на C, и у меня есть GtkLinkButton, который содержит GtkStockItem. Как я могу удалить поле кнопки, которое появляется, когда указатель мыши включен и когда я щелкаю по нему?



EDIT

Большое спасибо, но это не работает. Это вывод:

"Gtk-WARNING **: подано для установки текста из разметки из-за ошибки разбора разметки: неизвестный тег 'a' в строке 1 char 38

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

Gtk-WARNING **: подано для установки текста из разметки из-за ошибки разбора разметки: неизвестный тег 'a' в строке 1 char 38 "

Я изучаю библиотеки GTK с небольшого времени, но думаю, что вы не можете использовать все html-теги, которые вам нужны, в функции gtk_label_set_markup () (тег 'a' равен одному). Я понимаю, что вы можете использовать только язык разметки текста Pango (http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html),, поэтому вы не можете использовать тег 'a' или не использовать его напрямую.

1 Ответ

2 голосов
/ 22 мая 2010
gtk_button_set_relief(GTK_BUTTON(link_button), GTK_RELIEF_NONE);

Addenum:

Да, вы правы! Невозможно позволить GtkButton вести себя таким образом (и, на мой взгляд, GTK_RELIEF_HALF и GTK_RELIEF_NORMAL выглядят одинаково).

Вместо этого вы можете использовать GtkLabel. В Си это будет что-то вроде:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...