gpt4 book ai didi

gtk - 如何将自定义函数连接到 GTK 按钮的单击操作?

转载 作者:行者123 更新时间:2023-12-01 11:21:00 24 4
gpt4 key购买 nike

我正在学习 Elementary OS 提供的 Vala GTK+3 教程。我理解这段代码:

var button_hello = new Gtk.Button.with_label ("Click me!");
button_hello.clicked.connect (() => {
button_hello.label = "Hello World!";
button_hello.set_sensitive (false);
});

使用 Lambda 函数在单击按钮时更改按钮的标签。我想要做的是改为调用此函数:

void clicked_button(Gtk.Button sender) {
sender.label = "Clicked. Yippee!";
sender.set_sensitive(false);
}

我已经试过了:

button.clicked.connect(clicked_button(button));

但是当我尝试编译时,我从 Vala 编译中得到了这个错误:

hello-packaging.vala:16.25-16.46: error: invocation of void method not allowed as expression
button.clicked.connect(clicked_button(button));
^^^^^^^^^^^^^^^^^^^^^^
Compilation failed: 1 error(s), 0 warning(s)

我是 Vala 和 Linux 的新手,所以请保持温和,但有人可以指出我正确的方向吗?

最佳答案

您需要传递函数的引用,而不是函数的结果。所以应该是:

button.clicked.connect (clicked_button);

单击按钮时,GTK+ 将调用 clicked_button 函数,并将按钮作为参数。

错误消息 invocation of void method not allowed as expression 告诉您您正在调用(调用)该方法但没有结果(void)。在函数名称的末尾添加括号 () 会调用该函数。

关于gtk - 如何将自定义函数连接到 GTK 按钮的单击操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com