在Ubuntu Linux上,我可以使用Glade应用程序创建一个Hello World对话框。现在我如何让D编程语言显示它?
答案 0 :(得分:11)
sudo apt-get install glade
轻松地在Ubuntu Linux上获得 Glade ,但有关在各种其他平台上安装的更多信息是here。请注意,Glade中的工具选项板显示 Window 小部件和 ApplicationWindow 小部件。由于我们没有绘制任何菜单,因此请确保您使用 Window 小部件而不是 ApplicationWidget 。如果你没有这样做,你会在运行应用程序时收到警告,谈论一些丢失的菜单调用。
将其另存为 hello.glade 。
<object class="GtkWindow" id="window1">
写下一张 id 属性的纸张。
import gtk.Builder;
import gtk.Main;
import gtk.Widget;
import gtk.Window;
import std.stdio;
int main (string[] args)
{
Main.init(args);
Builder b = new Builder();
b.addFromFile("hello.glade");
Window w = cast(Window)b.getObject("window1");
w.addOnHide( delegate void(Widget aux){ Main.quit(); } );
w.showAll();
Main.run();
return 0;
}
# dmd hello.d `pkg-config --cflags --libs gtkd3`
# ./hello
export NO_AT_BRIDGE=1
现在,当您打开命令提示符并再次运行已编译的D命令“hello”时, 它不会显示错误。
如果您收到有关菜单的错误,则使用 ApplicationWindow 小部件而不是a Window 小部件,需要在 Glade 中切换。
我这样做的方法是点击 Glade 中的小部件,点击信号,找到我要添加的活动,例如单击,然后在“处理程序”列中键入一个函数。例如,在button1上,我会输入 onButton1Clicked 。保存文件。
现在,在D源代码中,在创建Window对象后立即添加以下代码:
b.connectSignals(null);
...其中b是您的Builder变量。
extern(C) void onButton1Clicked()
{
writeln("got here");
Main.quit();
}
请注意,在这种情况下,extern(C)是必需的。