1

connect_signalsこのメソッドを使用して Glade シグナルを Gjs/Seed メソッドにバインドしたいと考えています。
しかし、私は常に次のエラーを受け取ります:メソッドArgument 'user_data' (type void) may not be null
の使用方法を知っている人はいますconnect_signalsか?

Gjs/シードファイル

Gtk.init(null, 0);
let builder = new Gtk.Builder();
builder.add_from_file( "ui.glade" );

builder.connect_signals(this);
        
Gtk.main();

function on_button_ok_clicked() {
    print("ok");
};

グレードヤスリ

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <object class="GtkWindow" id="window">
    <child>
      <object class="GtkButton" id="button_ok">
        <signal name="clicked" handler="on_button_ok_clicked" swapped="no"/>
      </object>
    </child>
4

1 に答える 1

1

user_data が原因で connect_signals を機能させることができませんでしたvoid*が、いくつかの不思議な理由で connect_signals_full が機能します :-)

const SignalHandlers = new Lang.Class({
    Name: 'SignalHandlers',

    _init: function () {},

    your_switch_active_notify_cb: function (object) {
      print("switch is active:" + object.get_active());
    },

    _connector: function(builder, object, signal, handler) {
      object.connect(signal, Lang.bind(this, this[handler]));
    },
});

function buildPrefsWidget() {
  let win = new Gtk.Table(), ui = new Gtk.Builder();

  ui.add_from_file(Me.dir.get_path() + "/prefs.ui");
  ui.get_object("content-table").reparent(win);

  let signal_handlers = new SignalHandlers();
  ui.connect_signals_full(Lang.bind(signal_handlers, signal_handlers._connector));

  return win;
}
于 2013-05-16T13:22:30.587 に答える