首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(dlang,GtkD)使用脑膜

(dlang,GtkD)使用脑膜
EN

Stack Overflow用户
提问于 2015-03-05 09:06:53
回答 1查看 361关注 0票数 0

我在这个站点(2)中复制了代码,并通过dmd2编译了它。

代码语言:javascript
复制
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;
    }
}

窗口显示正确,但当我单击Exit MenuItem时它不会消失。我很困惑。有什么想法吗?

环境: Ubuntu 14.04 LTS

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-06 01:32:16

button-release-event (addOnButtonRelease() in GtkD)是为GtkMenuItem连接的错误信号。这是一个低级别的GDK事件;也就是说,当用户释放鼠标按钮时,对窗口系统产生的原始事件的抽象。它用于自定义事件处理,比如如果您使用的是GtkDrawingArea。

相反,您需要activate信号(addOnActivate() in GtkD)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28873824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档