GTK: Как сделать ярлыки кнопками (вроде списка) - PullRequest
0 голосов
/ 17 ноября 2011

В GTK + я хотел бы иметь вертикальный список меток, которые пользователь может прокручивать. Пользователь может щелкнуть любую метку, и она перейдет к собственной функции обратного вызова.

Сейчас я использую вертикальную область кнопок, но мне действительно не нравятся кнопки. Чтобы привести хороший пример, то, что я пытаюсь достичь, может показаться очень похожим на ListView в Android:

Picture of an Android ListView

Возможно ли этого добиться? Я пытался заменить мои кнопки на ярлыки, но сигналы перестали работать (что имело бы смысл). GtkList исчерпан, и я не уверен, что я должен использовать вместо этого?

Ответы [ 4 ]

2 голосов
/ 17 ноября 2011

Я думаю, вы можете использовать GtkTreeView с GtkListStore (GtkTreeSelection для выбора в GtkTreeView).Конечно, для прокрутки вы будете использовать GtkScrolledWindow.Использование GtkTreeView может быть немного пугающим для новичка, но есть немало учебников, доступных онлайн , как этот .Также, если вы можете установить приложение gtk-demo (часть пакета gtk2.0-examples в Ubuntu), которое демонстрирует использование виджетов Gtk вместе с кодом, это будет весьма полезно для вас.
Надеюсь, это поможет!

1 голос
/ 17 ноября 2011

То, что вы также можете сделать (если вы действительно хотите использовать метки), это просто поместить каждый из них в GTKEventBox, а затем установить маску события для получения щелчков мыши.

EDIT: Пример:

GtkWidget* gtk_clickable_label_new(const gchar *str)
{
    GtkWidget *eventbox, *label;

    label = gtk_label_new(str);
    gtk_widget_show(label);

    eventbox = gtk_event_box_new();
    gtk_widget_add_events(eventbox, GDK_BUTTON_PRESS_MASK);
    gtk_container_add(GTK_CONTAINER(eventbox), label);

    return eventbox;
}
0 голосов
/ 01 августа 2012

Я думаю, что вы хотите, это набор кнопок Gtk, которые не имеют высоты / глубины.

Для этого используйте gtk_button_set_relief и выберите GTKReliefStyle из GTK_RELIEF_NONE.

Вот как я помещаю кнопки в заголовки GtkTreeViewColumn, это выглядит красиво.

Попробуйте!

0 голосов
/ 17 ноября 2011

Вы пытались поместить свои метки в GtkVBox в GtkScrolledWindow?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...