我做了一個類的whoss父類是在vala gtk.box。不支持鏈接到框架構造函數,所以,如何在構造函數中設置框的方向?是可以更改gtk中方塊的方向嗎?
回答
在呼籲this.set_orientation (Gtk.Orientation.VERTICAL)
可能的工作,要做到這一點更正確的方法是在構造時設置orientation
屬性,就像Gtk.Box默認的構造函數。在瓦拉,你會做這樣的事情:
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;
}
的d在第一個版本中,方向將在實例化(換句話說,在每個祖先類的構造塊期間)被正確設置爲,而對於第二個版本,將首先以錯誤的方向創建對象,那麼方向將會改變。我不確定這種差異是否對Gtk.Box有重大意義,但在某些情況下,這一點非常重要,因此養成按照正確方式進行操作的習慣可能是一個好主意。
如果您不確定「構造塊」是什麼意思,請參閱Vala教程中有關GObject-Style Construction的部分。
不錯!我知道了。爲什麼「set_orientation()」和方向屬性不在文檔中(valadoc)?它只顯示公共方法? – angrymadcat
它們位於Gtk.Orientable的文檔中,該文檔是Gtk.Box實現的。 – nemequ
只是爲了迂腐,在兩種情況下它都會生成'g_object_new(MY_TYPE_BOX,...)',這不重要! –
set_orientation(Orientation.VERTICAL);
- 1. 是否可以更改RatingBar方向?
- 2. 我可以根據設備方向更改頁面的html嗎?
- 3. 是否可以禁用Symbian Web App的方向更改?
- 4. 是否可以在設備方向更改的控制器上更改單個視圖的方向?
- 5. mgwt - 以編程方式更改方向
- 6. 我可以暫時禁用我的活動中的自動方向更改嗎?
- 7. 方向更改
- 8. 方向更改
- 9. 故事板手柄方向是否可以自動更改?
- 10. 我可以在Rails 3中以編程方式更改config.cache_classes嗎?
- 11. 我可以更改MVC中的LabelFor呈現方式嗎?
- 12. 我可以更改方法中的Perl 6俚語嗎?
- 13. 我可以在Main方法中更改類方法中的變量嗎?
- 14. 以不同的方向更改視圖
- 15. 我可以向模塊添加方法嗎?
- 16. 我可以使用線程來更改GTK圖像嗎?
- 17. 在android中更改方向
- 18. 在JFrame中更改方向
- 19. 在UITabBar中更改方向
- 20. Iphone方向更改
- 21. 更改方向ANDROID
- 22. ViewController方向更改
- 23. UIWebView方向更改
- 24. Android方向更改
- 25. UIView可以「忽略」界面方向嗎?
- 26. 我可以更改應用內購買登錄視圖的方向嗎?
- 27. 我可以以某種方式更改郵件發件人嗎?
- 28. 什麼是設計和更改GTK界面的最佳方式?
- 29. 方向更改:IllegalStateException當DialogFragment可見時
- 30. 以方向更改視圖佈局
你是什麼意思的方向?它看起來不像Box的構造函數接受任何參數:http://unstable.valadoc.org/#!api=gtk+-2.0/Gtk.Box。 – Hassan
在gtk + -2.0中,Gtk.Box沒有構造函數(它是一個不能實例化的抽象類),但是它在gtk + -3.0中有。看到http://valadoc.org/#!api=gtk+-3.0/Gtk.Box.Box – nemequ