c++ - Gtkmm2.4 中的 Signal_draw

标签 c++ drawing signals cairo gtkmm

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

error: ‘signal_draw’ was not declared in this scope

我正在使用 g++。

gtkmm2.4好像没有signal_draw(我错了吗?)。有什么函数/信号可以代替吗?

提前致谢。

抱歉我的英语不好。

部分代码:

class egclass: public Gtk::DrawingArea

{

public:

egclass();

virtual ~egclass();

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

};

egclass::egclass()

{

#ifndef 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 作为练习留给读者。

另请参阅以下链接:

关于c++ - Gtkmm2.4 中的 Signal_draw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9193555/

相关文章:

带有线程的 C++ 主程序需要两次 Ctrl+C 才能退出

c++ - 比较两个元组,但仅比较前两个参数

c++ - asiostrand对象线程安全吗?

ios - 当我慢慢画线时,绘图中的虚线不起作用

ios - 某些角度的连接线具有尖的顶点而不是圆形的

python - 如何使用 matplotlib 使绘图的 xtick 标签成为简单的绘图?

serial-port - 在Control-C之后还恢复串行端口属性吗?

c++ - Qt/C++ - 设置禁用按钮的背景?

c++ - 将常量值传递给模板

c - 来自信号处理程序的 longjmp()