2009-05-07 3 views
4

Я не прошу реализации кода, но с учетом набора навыков GTK +, что было бы с абстрактной точки зрения лучшим способом реализовать сетку, чтобы каждый квадрат был доступен для кликов и тому подобное?Создание сетки в GTK +

ответ

5

Для этого я бы воспользовался таблицей - http://library.gnome.org/devel/gtk/stable/GtkTable.html - и залейте ее кнопками - http://library.gnome.org/devel/gtk/stable/GtkButton.html. Оттуда, если вы не хотите, чтобы кнопки выглядели так, будто они были кнопками, я бы установил рельеф - http://library.gnome.org/devel/gtk/stable/GtkButton.html#gtk-button-set-relief - None.

Выполнение этого способа даст вам сетку, где каждый элемент имеет тот же размер, и событие запускается при нажатии элемента в сетке.

Вышеуказанное предполагает, что сетка будет иметь более чем одну строку, если вы только планируете иметь одну строку, которую вы бы лучше использовать либо GtkHButtonBox - http://library.gnome.org/devel/gtk/stable/GtkHButtonBox.html - или GtkVButtonBox - http://library.gnome.org/devel/gtk/stable/GtkVButtonBox.html.

0

Я предлагаю второе предложение mlowen использовать GtkTable для основной организации сетки, очень легко получить сетчатый вид. Вы также можете исследовать заполнение каждой ячейки простым GtkEventBox, если вам не нужен встроенный рисунок кнопки.

Eventbox - невидимый виджет, который в основном добавляет окно и делает закрытую область доступной. Полезно сделать некоторые из «тихих» виджетов GTK + более интерактивными, например, обычно используется за GtkLabel, чтобы сделать его интерактивным; если метка обеспечивает достаточную возможность рисования для ваших нужд, это также возможный способ продолжения.

5

Если сетка будет большой, вы можете также рассмотреть GtkTreeView.

Он может отображать деревья в виде сеток и поддерживает прямоугольный выбор. Ячейки могут отображать текст, цифры и простые виджеты, такие как кнопки, переключатели, меню опций, индикаторы выполнения и т. Д. Он хорошо работает даже в больших наборах данных (много тысяч строк) и имеет приятные функции, такие как сортировка столбцов и т. Д.

Этот API является довольно сложным, однако :-(Это полный MVC вещь и занимает немного тыкать о, чтобы получить его работать хорошо

Там пример кода в GTK-демо:. Посмотреть на «редактируемых ячеек» демо в разделе «Вид дерева».

Смежные вопросы