【发布时间】:2016-03-06 04:42:14
【问题描述】:
我正在尝试用 Gtk3 理解 Vala 代表。 我测试了回调和 lambda 没有问题。 我想测试一个委托回调,这里是我的代码:
using Gtk;
delegate void typeDelegate(Button button);
int main (string[] args) {
Gtk.init (ref args);
typeDelegate cb = cbLabelf;
var window = new Window ();
window.title = "First GTK+ Program";
window.border_width = 10;
window.window_position = WindowPosition.CENTER;
window.set_default_size (350, 70);
window.destroy.connect (Gtk.main_quit);
var button = new Button.with_label ("Click me!");
//button.clicked.connect (cb);
//button.clicked+= cb;
button.clicked.connect+=cb;
window.add (button);
window.show_all ();
Gtk.main ();
return 0;
}
void cbLabelf(Button button)
{
button.label = "tank yu";
}
我还生成了红色的 C 代码(当我使用 lambda 时)来理解。
这里是编译错误:
GTKsampleDelegate.vala:20.5-20.30: 错误: 类型 Gtk.Button.clicked.connect' andtypeDelegate' 不支持算术运算
button.clicked.connect+=cb;
【问题讨论】: