Gtk button (как изменить надпись виджета?)

Модератор: Модераторы разделов

Аватара пользователя
sergius
Сообщения: 782

Gtk button

Сообщение sergius »

Привет, all!

Допустим, есть такая маленькая прога. Она отображает окно с кнопкой, при нажатии которой в терминал выводится сообщение. Вообщем-то и все.
Хочу создать процедуру (new_text_button()), которая будет просто изменять надпись этой кнопки.
Как это сделать и с какими параметрами ее вызывать?

Код: Выделить всё

#include <gtk/gtk.h>

gint eventDelete(GtkWidget *widget,GdkEvent *event,gpointer data);
gint eventDestroy(GtkWidget *widget,GdkEvent *event,gpointer data);
void eventButton(GtkWidget *widget,GdkEvent *event,gpointer data);
void new_text_button();

int main(int argc,char *argv[]) {
    GtkWidget *topLevelWindow;
    GtkWidget *pushMeButton;

    gtk_init(&argc,&argv);
    topLevelWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_signal_connect(GTK_OBJECT(topLevelWindow),
            "delete_event",
            GTK_SIGNAL_FUNC(eventDelete),
            NULL);
    gtk_signal_connect(GTK_OBJECT(topLevelWindow),
            "destroy",
            GTK_SIGNAL_FUNC(eventDestroy),
            NULL);
    pushMeButton = gtk_button_new_with_label("Push me!");
    gtk_signal_connect(GTK_OBJECT(pushMeButton),
            "clicked",
            GTK_SIGNAL_FUNC(eventButton),
            NULL);
    gtk_container_add(GTK_CONTAINER(topLevelWindow),
            pushMeButton);
    gtk_container_set_border_width(
            GTK_CONTAINER(topLevelWindow),30);
    gtk_widget_show(topLevelWindow);
    gtk_widget_show(pushMeButton);
    gtk_main();
    exit(0);
}
void eventButton(GtkWidget *widget,
        GdkEvent *event,gpointer data) {
    g_print("The button was pushed!\n");
}
void new_text_button() {
  //Что надо здесь написать для изменения имени кнопки?
}
gint eventDelete(GtkWidget *widget,
        GdkEvent *event,gpointer data) {
    return(FALSE);
}
gint eventDestroy(GtkWidget *widget,
        GdkEvent *event,gpointer data) {
    gtk_main_quit();
    return(0);
}


Спасибо!
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Gtk button

Сообщение d_n_k »

Код: Выделить всё

void new_text_button(GtkButton* src, gpointer data)
{
  gtk_button_set_label(src, (gchar*)data);
}

...
g_signal_connect (G_OBJECT (button), "clicked",
        G_CALLBACK (new_text_button), (gpointer) "cool button");
...


d_n_k добавил в 18.09.2005 22:52

http://gtk.org/tutorial/
все сказанное есть имхо...
Спасибо сказали: