GTkmm2.4中的Signal_draw

发布于 2025-01-03 05:10:12 字数 768 浏览 2 评论 0 原文

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

错误:“signal_draw”未在此范围内声明

我正在使用 g++。

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

提前致谢。

抱歉我的英语不好。

一些代码:

类egclass:公共Gtk::DrawingArea

{

公开:

egclass();

虚拟 ~egclass();

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

};

egclass::egclass()

{

#ifndef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED

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

#endif

}

I'm trying to compile a gtkmm application that uses cairomm for drawing.
It compiles fine using gtkmm3.0 but when I try to compile it using gtkmm2.4 i get:

error: ‘signal_draw’ was not declared in this scope

I'm using g++.

It seems that there is no signal_draw in gtkmm2.4(Am I wrong?). Is there any function/signal that can be used instead?

Thanks in advance.

Sorry for my bad English.

Some code:

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

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吾家有女初长成 2025-01-10 05:10:12

较旧的 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 留给读者作为练习。

另请参阅以下链接:

The older gtkmm 2.4 has on_expose_event instead:

virtual bool on_expose_event(GdkEventExpose* event);

If you need to create a cairo context for drawing, with the GTK+ C API it goes something like this:

cairo_t *cr;

cr = gdk_cairo_create (event->window);
gdk_cairo_region (cr, event->region);
cairo_clip (cr);

/* do your drawing */

cairo_destroy (cr);

... translating the snippet above to gtkmm is left as an exercise to the reader.

Also see the following links:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文