是否可以在gtk中更改长方体的方向?

是否可以在gtk中更改长方体的方向?,gtk,vala,Gtk,Vala,我做了一个类,它的父类是vala中的gtk.box。不支持链接到长方体构造函数,因此,在调用this.set_Orientation(Gtk.Orientation.VERTICAL)时,如何在构造函数中设置长方体的方向??可能有效,更正确的方法是在构造时设置Orientation属性,就像Gtk.Box默认构造函数一样。在瓦拉,你会这样做: set_orientation(Orientation.VERTICAL); public class MyBox : Gtk.Box { publ

我做了一个类,它的父类是vala中的gtk.box。不支持链接到长方体构造函数,因此,在调用
this.set_Orientation(Gtk.Orientation.VERTICAL)
时,如何在构造函数中设置长方体的方向??

可能有效,更正确的方法是在构造时设置
Orientation
属性,就像Gtk.Box默认构造函数一样。在瓦拉,你会这样做:

set_orientation(Orientation.VERTICAL);
public class MyBox : Gtk.Box {
  public MyBox () {
    GLib.Object (orientation: Gtk.Orientation.VERTICAL);
  }
}
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;
}
在C级,这与只调用
set\u-orientation
有些不同。。。它将生成类似这样的内容(为清晰起见简化):

另一方面,调用
set\u orientation
(或设置
orientation
属性)将生成如下内容:

public class MyBox : Gtk.Box {
  public MyBox () {
    GLib.Object (orientation: Gtk.Orientation.VERTICAL);
  }
}
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是否有意义,但在某些情况下,这是非常重要的,因此养成以正确方式进行操作的习惯可能是个好主意


如果您不确定我所说的“构造块”是什么意思,请在调用
this.set_orientation(Gtk.orientation.VERTICAL)
时查看Vala教程中的一节。

可能会起作用,更正确的方法是在构造时设置
orientation
属性,就像Gtk.Box默认构造函数一样。在瓦拉,你会这样做:

public class MyBox : Gtk.Box {
  public MyBox () {
    GLib.Object (orientation: Gtk.Orientation.VERTICAL);
  }
}
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;
}
在C级,这与只调用
set\u-orientation
有些不同。。。它将生成类似这样的内容(为清晰起见简化):

另一方面,调用
set\u orientation
(或设置
orientation
属性)将生成如下内容:

public class MyBox : Gtk.Box {
  public MyBox () {
    GLib.Object (orientation: Gtk.Orientation.VERTICAL);
  }
}
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教程中关于方向的部分。

您所说的方向是什么意思?它看起来不像
Box
的构造函数接受任何参数:。在gtk+-2.0 gtk中。Box没有构造函数(它是一个抽象类,无法实例化),但在gtk+-3.0中它有。明白你说的方向是什么意思吗?它看起来不像
Box
的构造函数接受任何参数:。在gtk+-2.0 gtk中。Box没有构造函数(它是一个抽象类,无法实例化),但在gtk+-3.0中它有。看得好!我得到了它。为什么文档中没有“set_orientation()”和方向属性(valadoc)?它只显示公共方法?它们在Gtk.Orientable的文档中,Gtk.Box实现了它。只是为了学究,在这两种情况下,它都会生成
g\u object\u new(MY\u TYPE\u Box,…)
,这并不重要!美好的我得到了它。为什么文档中没有“set_orientation()”和方向属性(valadoc)?它只显示公共方法?它们在Gtk.Orientable的文档中,Gtk.Box实现了它。只是为了学究,在这两种情况下,它都会生成
g\u object\u new(MY\u TYPE\u Box,…)
,这并不重要!