Signal_draw в Gtkmm2.4 - PullRequest
       41

Signal_draw в Gtkmm2.4

1 голос
/ 08 февраля 2012

Я пытаюсь скомпилировать приложение gtkmm, которое использует cairomm для рисования.Он прекрасно компилируется с помощью gtkmm3.0, но когда я пытаюсь скомпилировать его с помощью gtkmm2.4, я получаю:

ошибка: 'signal_draw' не было объявлено в этой области

Я использую g ++.

Кажется, что в gtkmm2.4 нет signal_draw (я не прав?).Есть ли какая-либо функция / сигнал, который можно использовать вместо этого?

Заранее спасибо.

Извините за мой плохой английский.

Какой-то код:

класс 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

}

1 Ответ

3 голосов
/ 08 февраля 2012

Более старый 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 оставлен читателю в качестве упражнения.

Также смотрите следующие ссылки:

...