Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: С-GTK и Клавиатура(какую клавишу нажал? )  (Прочитано 677 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн jonik908

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Есть код в правельности которого я не сильно уверен

include <gtk/gtk.h>
   
    GtkWidget *Window;
    GtkWidget *label;

set_text (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
{
    gchar keypress = event->keyval;
    gtk_label_set_text (GTK_LABEL (label), &keypress);
    g_printf("key-press-event, %i \n", keypress);
}
int main (int argc, char *argv[]){
    gtk_init (&argc, &argv);

    Window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title (GTK_WINDOW (Window), "Window");

    label = gtk_label_new ("ничего не нажато");
    gtk_container_add (GTK_CONTAINER(Window), label);

    g_signal_connect (Window, "key_press_event", G_CALLBACK (set_text), NULL);
    g_signal_connect (Window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
   
    gtk_widget_show (Window);
    gtk_widget_show (label);

    gtk_main();

    return 0;
}

Возникли трудности в
set_text (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
{
    gchar keypress = event->keyval; <- смутно понял "event->keyval" как с этим работать
    gtk_label_set_text (GTK_LABEL (label), &keypress);<- Основной вопрос. Допустим я нажал клавишу "S" то "label" должен отобразить "S"
                                                         а если я нажал "Ы" то и результат в "label" должен быть соответствующим.
    g_printf("key-press-event, %i \n", keypress);
}

По голове не бейте. объяснил как смог. На русском я адекватной инфы не нашел, а на английском я читал и нехера не понял  :-\ 

 

Страница сгенерирована за 0.03 секунд. Запросов: 25.