【发布时间】:2015-09-11 05:29:11
【问题描述】:
在 Ubuntu Linux 上,我可以使用 Glade 应用程序创建一个 Hello World 对话框。现在如何让 D 编程语言显示呢?
【问题讨论】:
-
如果你自己解决了这个问题,别忘了在这里也发布答案(你可以回答你自己的问题),这样搜索的人也可以看到。
标签: linux ubuntu-14.04 d glade gtkd
在 Ubuntu Linux 上,我可以使用 Glade 应用程序创建一个 Hello World 对话框。现在如何让 D 编程语言显示呢?
【问题讨论】:
标签: linux ubuntu-14.04 d glade gtkd
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 小部件而不是 Window 小部件,需要在 Glade 中进行切换。
我的做法是在Glade中点击一个小部件,点击Signals,找到我要添加的事件,比如点击,然后在 Handler 列中,输入一个函数。例如,在 button1 上,我会键入 onButton1Clicked。保存文件。
现在,在您的 D 源代码中,在您创建 Window 对象之后,添加以下代码:
b.connectSignals(null);
...其中 b 是您的 Builder 变量。
extern(C) void onButton1Clicked()
{
writeln("got here");
Main.quit();
}
请注意,在这种情况下,extern(C) 是必需的。
【讨论】: