Signal_draw in Gtkmm2.4

Signal_draw in Gtkmm2.4

本文关键字:Gtkmm2 in draw Signal      更新时间:2023-10-16

我正在尝试编译一个使用cairomm进行绘图的gtkmm应用程序。它使用gtkmm3.0编译得很好,但当我尝试使用gtkmm2.4编译它时,我得到了:

错误:未在此作用域中声明"signal_draw"

我正在使用g++。

gtkmm2.4中似乎没有signal_draw(我错了吗?)。有什么功能/信号可以替代吗?

提前谢谢。

抱歉我英语不好。

部分代码:

class egclass:public Gtk::DrawingArea

公用:

egclass();

virtual~egclass();

virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr);

};

egclass::egclass()

#如果定义GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED

signal_draw().connect(sigc::mem_fun(*this,&egclass::on_draw),false);

#endif

}

较旧的gtkmm 2.4具有on_expose_event:

virtual bool on_expose_event(GdkEventExpose* event);

如果你需要为绘图创建一个cairo上下文,使用GTK+C API,它会像这样:

cairo_t *cr;
cr = gdk_cairo_create (event->window);
gdk_cairo_region (cr, event->region);
cairo_clip (cr);
/* do your drawing */
cairo_destroy (cr);

将上面的片段翻译成gtkmm留给读者练习。

另请参阅以下链接:

  • 从gtkmm-2.4移植到gtkmm-3.0
  • 从GTK+2.x迁移到GTK+3
  • 示例_pixbufs.cc