используя Каир с GTK3 - PullRequest
       30

используя Каир с GTK3

1 голос
/ 04 января 2012

Я пытаюсь нарисовать диаграмму рассеяния с Каиром в gtk3.Для начала я использую примеры здесь: http://zetcode.com/tutorials/cairographicstutorial/

Они успешно компилируются с gtk2, но не отображают изображения.Они не компилируются с gtk3, но выдают следующую ошибку:

example.c: In function ‘on_expose_event’:
example.c:17:31: error: ‘GtkWidget’ has no member named ‘window’

Любая помощь по этому вопросу будет принята с благодарностью.

Кстати, я использую написание с использованием ArchLinux, если это поможет.

1 Ответ

7 голосов
/ 04 января 2012

В Gtk3 было довольно много изменений.Нет члена window, выставленного как часть GtkWidget, участники были перемещены в GtkWidgetPrivate, который является непрозрачной структурой, поэтому вы не можете получить доступ к членам напрямую из GtkWidget.Вам нужно будет использовать функцию доступа, в этом случае, когда вам нужен window член GtkWidget, вы можете использовать gtk_widget_get_window, но это может не исправить пример кода, с которым вы работаете.Обратите внимание, что сигнал expose_event был заменен на сигнал draw, поэтому вам нужно будет обновить функцию, которая на самом деле рисует должным образом (я думаю, on_expose_event в вашем случае).Пожалуйста, обратитесь по этой ссылке , чтобы увидеть список изменений, необходимых для перехода на Gtk3.Вы можете обратиться к источнику, предоставленному приложением gtk-demo или demos/gtk-demo из исходного кода Gtk3, чтобы получить образец кода.
Что касается изображения, которое не отображается в случае Gtk2, если вы работаете с образцом изображения, убедитесь, что изображениефайл доступен по пути, указанному в источнике.
Надеюсь, это поможет!

...