Vala-Json用户界面-如何连接用户界面信号?
我正在尝试将基于JSON的UI文件用于混乱。我想把UI文件中的信号连接到Vala代码 我尝试过类似的方法,它加载UI但不连接信号 如何连接UI文件中的信号?谢谢强>Vala-Json用户界面-如何连接用户界面信号?,json,user-interface,vala,clutter,Json,User Interface,Vala,Clutter,我正在尝试将基于JSON的UI文件用于混乱。我想把UI文件中的信号连接到Vala代码 我尝试过类似的方法,它加载UI但不连接信号 如何连接UI文件中的信号?谢谢 这是我的主要观点。瓦拉: 使用杂波; 类UIDemo{ 公共UIDemo() { var ui_json=新脚本(); ui_json.load_from_文件(“ui.json”); ui_json.connect_信号(此); Stage Stage=(Stage)ui_json.get_对象(“主Stage”); stage.s
这是我的主要观点。瓦拉:
使用杂波;
类UIDemo{
公共UIDemo()
{
var ui_json=新脚本();
ui_json.load_from_文件(“ui.json”);
ui_json.connect_信号(此);
Stage Stage=(Stage)ui_json.get_对象(“主Stage”);
stage.show();
}
已激活()上的受保护的空
{
打印标准(“激活”);
}
}
void main(字符串[]args)
{
杂波.init(参考参数);
var app=new UIDemo();
main();
}
以下是ui.json:
{
"id": "main-stage",
"type": "ClutterStage",
"color": "white",
"width": 800,
"height": 600,
"title": "Script demo",
"children": [{
"id": "hello-label",
"type": "ClutterText",
"x": 400,
"y": 300,
"text": "Hello, world!",
"color": "black",
"font-name": "Sans 48px"
}],
"signals": [
{
"name": "destroy",
"handler": "clutter_main_quit"
},
{
"name": "activate",
"handler": "onActivated"
}]
}
有两件事可以让它工作:
stdout
上打印,但是stderr
会打印
在ui.json
中,我更改了:
{
"name": "activate",
"handler": "onActivated"
}
到
Vala生成的C中的名称包括类名。也可以通过查看C代码找到它。使用--ccode
开关和valac
生成C文件
此符号还需要出现在二进制文件的动态符号表中。应将advises-export dynamic
传递给链接器。这是由C编译器完成的,可以使用-X-export dynamic
从valac
将此开关传递给C编译器:
valac --pkg clutter-1.0 -X -export-dynamic main.vala
您可以读取二进制文件中可用的动态符号。对于生成ELF二进制文件的平台,如Linux,请使用readelf--dyn syms main
,其中main
是生成的二进制文件的名称<代码>ui_demo_on activated将在该列表中
valac --pkg clutter-1.0 -X -export-dynamic main.vala