我从在线教程中获得了以下代码。当我使用gtk + -2.0时,以下代码工作正常。
但是当我尝试使用gtk + -3.0进行编译时,代码会出现此错误:
信号'expose-event'对于'GtkWindow'
类型的例子无效
所以我尝试做以下事情,但仍然没有帮助。它又给出了另一个错误:
信号'expose-event'对于'GdkX11Window'
类型的例子无效
gtk_widget_realize(window);
GdkWindow *gdkwin = gtk_widget_get_window(Gwindow);
int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(window, "expose-event",
G_CALLBACK (on_expose_event), NULL);
g_signal_connect(window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window), 300, 230);
gtk_widget_set_app_paintable(window, TRUE);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
答案 0 :(得分:2)
Migrating from gtk2 to gtk3,第 Changes that need to be done at the time of the switch部分
GtkWidget“expose-event”信号已被新的“draw”信号取代,该信号采用cairo_t而不是曝光事件。正在设置cairo上下文,以便(0,0)处的原点与窗口小部件的左上角重合,并被正确剪裁。
无需连接任何信号即可使代码正常工作。