2012-06-03 3 views
0

나는 클래스 whoss 상위 클래스가 vala의 gtk.box입니다. 상자 생성자에 연결하는 것은 지원되지 않습니다. 그래서 어떻게 생성자에서 상자의 방향을 설정할 수 있습니까 ?? this.set_orientation (Gtk.Orientation.VERTICAL)를 호출하면 작동 할 수 있지만gtk에서 상자의 방향을 변경할 수 있습니까?

+0

오리엔테이션이란 무엇입니까? 'Box'의 생성자는 어쨌든 인수를 취하지 않습니다 : http://unstable.valadoc.org/#!api=gtk+-2.0/Gtk.Box. – Hassan

+0

In gtk + -2.0 Gtk.Box에는 생성자가 없습니다 (인스턴스 생성 할 수없는 추상 클래스입니다). 그러나 gtk + -3.0에서는 생성자가 있습니다. http://valadoc.org/#!api=gtk+-3.0/Gtk.Box.Box – nemequ

답변

1

는이 작업을 수행하는 더 정확한 방법은 Gtk.Box의 기본 생성자가하는 것처럼, 구조 시간에 orientation 속성을 설정하는 것입니다. 발라, 당신은 같은 것을 할 것입니다 :

는 C 레벨에서
public class MyBox : Gtk.Box { 
    public MyBox() { 
    GLib.Object (orientation: Gtk.Orientation.VERTICAL); 
    } 
} 

, 이것은 ... 뭔가를 (명확성을 위해 단순화)이 같은 비트를 생성합니다 단지 set_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; 
} 

는 D :

MyBox* my_box_new() { 
    return g_object_new (GTK_TYPE_BOX, "orientation", GTK_ORIENTATION_VERTICAL, NULL); 
} 

같은 것을 생성하는 것, set_orientation를 호출 (또는 orientation 속성을 설정) 반면에, 첫 번째 버전의 경우 인스턴스화 중 (즉, 각 조상 클래스의 구성 블록 동안) 오리엔테이션이 정확히 으로 설정되는 반면, 두 번째 버전의 경우 객체는 먼저 잘못된 오리엔테이션으로 생성되지만, 방향이 변경됩니다. 이 차이가 Gtk.Box에서 중요한 것인지 아닌지는 잘 모르겠지만 어떤 경우에는 매우 중요하므로 올바른 방법으로 습관을 익히는 것이 좋습니다.

"구성 블록"이 무슨 뜻인지 확실하지 않으면 Vala 튜토리얼의 GObject-Style Construction 섹션을 살펴보십시오.

+0

니스! 알았다. "set_orientation()"및 오리엔테이션 속성이 문서 (valadoc)에없는 이유는 무엇입니까? 공용 메서드 만 보여줄 수 있습니까? – angrymadcat

+1

Gtk.Box가 구현하는 Gtk.Orientable에 대한 설명서에 있습니다. – nemequ

+0

그냥 pedantic을하기 위해서, 두 경우 모두'g_object_new (MY_TYPE_BOX, ...)'를 생성 할 것입니다. –

1
set_orientation(Orientation.VERTICAL); 
관련 문제