使用构建器内容构造Vala Gtk对象

Geo*_*son 5 gtk vala

能够创建一个使用构建器加载其内容的新窗口小部件是理想的,例如.

public class MyDialog : Dialog
  {
    public MyDialog
      {
        Gtk.Builder builder = new Gtk.Builder ();
        builder.add_from_file ("dialog.ui");
        this = builder.get_object ("my_dialog") as Gtk.Widget;
      }
    }
Run Code Online (Sandbox Code Playgroud)

显然这不会起作用,因为它this =是一个无效的赋值,但我想知道是否有办法使用从构建器加载的那些来设置窗口小部件的内容.

对于与此同时,我把它换成了this = ...

var content = get_content_area ();
var dialog = builder.get_object ("my_dialog") as Gtk.Widget;
var _content = (dialog as Dialog).get_content_area ();
_content.reparent (content);
Run Code Online (Sandbox Code Playgroud)

哪个确实有效,但是我能够直接加载它仍然有意义.

谢谢.

pto*_*ato 1

不,不可能。C++ 绑定有Gtk.Builder this,但不幸的是它依赖于 C++ 模板并且尚未在任何其他绑定中实现。