在GTK +中制作网格

4 c gtk algorithm

我不是要求代码实现,但是考虑到GTK +的技能,从抽象的角度来看,实现网格的最佳方式是什么,每个方块都是可点击的等等?

Mik*_*wen 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 - 无.

这样做将为您提供一个网格,其中每个元素的大小相同,并且当您单击网格中的项目时会触发事件.

上面假设网格将有多行,如果你只计划有一行,你最好使用GtkHButtonBox - http://library.gnome.org/devel/gtk/stable/GtkHButtonBox.html - 或者GtkVButtonBox - http://library.gnome.org/devel/gtk/stable/GtkVButtonBox.html.


小智 5

如果网格很大,您还可以考虑使用GtkTreeView.

它可以将树显示为网格,并支持矩形选择.单元格可以显示文本,数字和简单的小部件,如按钮,切换,选项菜单,进度条等.它表现良好,即使在大型数据集(数千行)上也具有良好的功能,如列排序等.

然而,API相当复杂:-(这是一个完整的MVC事情,需要一点点才能让它运行良好.

gtk-demo中有一些示例代码:查看"Tree View"下的"Editable Cells"演示.