• 订阅

    抓虾
    google reader
    bloglines
    鲜果
  • 分类目录

  • 功能

  • 标签

    不折腾 价值 健身 回忆 小说 幼稚的思想 影评 感想 推倒 朝花夕拾 犯罪 理想生活 生活 电影评论 看电影 看病 社会 社会事件 笔记本 网络 言论自由 过年 随想 黑客 黑客小说 AV女优 blog BotCalk cult festival Fvwm gloobus GMChess gmitter GMLive gtkmm iCalk iTalk M8 ppstream program soft talkmm twitter vim
  • Archive for 三月 25th, 2009

    Gtkmm中关于窗口的关闭按钮问题

    星期三, 三月 25th, 2009

    之前用Gtkmm写icalk时创造了一个关于窗口,但它有个bug,关闭按钮没响应。昨天为GMChess创建关于窗口的时候再次遇到这个bug,这次我认真地搜索了一下,终于发现问题所在。
    之前我都是创建完about窗口后,再调用show函数显示。
    其实是应该调用run函数。我忘记了about窗口其实是dialog类,平时对话框之类不是要调用run然后观其返回值嘛,原来我无形中把about窗口当成window类了。发现有不少人有这错觉哩。而gnome-osd-properties的关于窗口也有关不掉的bug,哈哈哈。
    下面给一个菜单调用about窗口的实例源码,

    void MainWindow::on_menu_about()
    {
    static Gtk::AboutDialog* about(0);
    if(about == 0){
    std::vector<Glib::ustring> authors;
    authors.push_back("lerosua ");
    authors.push_back("wind");
    about = new Gtk::AboutDialog ;
    Glib::RefPtr<Gdk::Pixbuf> logo = Gdk::Pixbuf::create_from_file(DATA_DIR"/gmchess.png");
    about->set_logo(logo);
    about->set_program_name("GMChess");
    about->set_version(version);
    about->set_website("http://lerosua.org");
    about->set_copyright("Copyright (c) 2009 lerosua");
    about->set_comments(_("GMChess is chinese chess game write by gtkmm"));
    about->set_authors(authors);
    about->set_license (_("This program is licenced under GNU General Public Licence (GPL) version 2."));
    about->set_translator_credits("lerosua");
     
     
    }
    //about->show();
    //about->raise();
    about->run();
    about->hide();
     
    }