我做了一个类,其父类是 gtk.box in vala。不支持链接到盒子构造函数,那么,如何在构造函数中设置盒子的方向?
问问题
1246 次
2 回答
2
虽然调用this.set_orientation (Gtk.Orientation.VERTICAL)
可能有效,但更正确的方法是orientation
在构造时设置属性,就像 Gtk.Box 默认构造函数一样。在 Vala,你会做这样的事情:
public class MyBox : Gtk.Box {
public MyBox () {
GLib.Object (orientation: Gtk.Orientation.VERTICAL);
}
}
在 C 级别,这与仅仅调用有点不同set_orientation
......它会生成有点像这样的东西(为了清楚起见进行了简化):
MyBox* my_box_new () {
return g_object_new (GTK_TYPE_BOX, "orientation", GTK_ORIENTATION_VERTICAL, NULL);
}
另一方面,调用set_orientation
(或设置属性)会生成如下内容:orientation
MyBox* my_box_new () {
MyBox* self = g_object_new (GTK_TYPE_BOX, NULL);
gtk_box_set_orientation (GTK_BOX(self), GTK_ORIENTATION_VERTICAL);
return self;
}
不同之处在于,对于第一个版本,方向将在实例化期间正确设置(换句话说,在每个祖先类的构造块期间),而对于第二个版本,对象将首先以错误的方向创建,然后方向会改变。我不确定这种差异对 Gtk.Box 是否重要,但在某些情况下它非常重要,因此养成以正确方式进行操作的习惯可能是个好主意。
如果您不确定我所说的“构造块”是什么意思,请查看 Vala Tutorial on GObject-Style Construction中的部分。
于 2012-06-04T00:54:20.473 回答
1
set_orientation(Orientation.VERTICAL);
于 2012-06-03T21:24:05.520 回答