Создание сетки в GTK + - PullRequest
4 голосов
/ 07 мая 2009

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

Ответы [ 3 ]

5 голосов
/ 07 мая 2009

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

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

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

В gtk-demo есть пример кода: посмотрите демо "Editable Cells" в разделе "Tree View".

5 голосов
/ 07 мая 2009

Лично для этого я бы использовал таблицу - 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 - на Нет.

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

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

0 голосов
/ 07 мая 2009

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

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

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