(dlang, GtkD) 使用菜单栏
(dlang, GtkD) Using menubar
我复制了本站的代码(https://sites.google.com/site/gtkdtutorial/#chapter2_2),用dmd2编译的。
import gtk.MainWindow;
import gtk.Box;
import gtk.Main;
import gtk.Menu;
import gtk.MenuBar;
import gtk.MenuItem;
import gtk.Widget;
import gdk.Event;
void main(string[] args)
{
Main.init(args);
MainWindow win = new MainWindow("MenuBar Example");
win.setDefaultSize(250, 200);
MenuBar menuBar = new MenuBar();
menuBar.append(new FileMenuItem());
Box box = new Box(Orientation.VERTICAL, 10);
box.packStart(menuBar, false, false, 0);
win.add(box);
win.showAll();
Main.run();
}
class FileMenuItem : MenuItem
{
Menu fileMenu;
MenuItem exitMenuItem;
this()
{
super("File");
fileMenu = new Menu();
exitMenuItem = new MenuItem("Exit");
exitMenuItem.addOnButtonRelease(&exit);
fileMenu.append(exitMenuItem);
setSubmenu(fileMenu);
}
bool exit(Event event, Widget widget)
{
Main.quit();
return true;
}
}
window 已正确显示,但当我单击 [退出] 菜单项时它没有消失。
我很困惑。有什么想法吗?
环境:
Ubuntu 14.04 LTS
button-release-event
(GtkD 中的 addOnButtonRelease()
)是 GtkMenuItem 连接的错误信号。这是一个低级 GDK 事件;也就是说,当用户松开鼠标按钮时,window 系统产生的原始事件的抽象。它用于自定义事件处理,就像您使用 GtkDrawingArea 一样。
相反,您需要 activate
信号(GtkD 中的 addOnActivate()
)。
我复制了本站的代码(https://sites.google.com/site/gtkdtutorial/#chapter2_2),用dmd2编译的。
import gtk.MainWindow;
import gtk.Box;
import gtk.Main;
import gtk.Menu;
import gtk.MenuBar;
import gtk.MenuItem;
import gtk.Widget;
import gdk.Event;
void main(string[] args)
{
Main.init(args);
MainWindow win = new MainWindow("MenuBar Example");
win.setDefaultSize(250, 200);
MenuBar menuBar = new MenuBar();
menuBar.append(new FileMenuItem());
Box box = new Box(Orientation.VERTICAL, 10);
box.packStart(menuBar, false, false, 0);
win.add(box);
win.showAll();
Main.run();
}
class FileMenuItem : MenuItem
{
Menu fileMenu;
MenuItem exitMenuItem;
this()
{
super("File");
fileMenu = new Menu();
exitMenuItem = new MenuItem("Exit");
exitMenuItem.addOnButtonRelease(&exit);
fileMenu.append(exitMenuItem);
setSubmenu(fileMenu);
}
bool exit(Event event, Widget widget)
{
Main.quit();
return true;
}
}
window 已正确显示,但当我单击 [退出] 菜单项时它没有消失。 我很困惑。有什么想法吗?
环境: Ubuntu 14.04 LTS
button-release-event
(GtkD 中的 addOnButtonRelease()
)是 GtkMenuItem 连接的错误信号。这是一个低级 GDK 事件;也就是说,当用户松开鼠标按钮时,window 系统产生的原始事件的抽象。它用于自定义事件处理,就像您使用 GtkDrawingArea 一样。
相反,您需要 activate
信号(GtkD 中的 addOnActivate()
)。