GtkWidget绘制事件多次触发

时间:2014-01-16 03:51:03

标签: c events gtk gtk2 drawingarea

我一直在试着为什么下面的代码会触发三次触发回调,而不是一次。

#include <iostream>
#include <gtk/gtk.h>

using namespace std;

void on_draw(){
    cout << "drawing"<<endl;
}

int main( int argc, char *argv[])
{
  GtkWidget *window;
  GtkWidget *drgArea;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  drgArea = gtk_drawing_area_new();
//  gtk_widget_set_redraw_on_allocate(drgArea, -1);
  gtk_container_add(GTK_CONTAINER(window), drgArea);
  gtk_widget_show_all(window);
  g_signal_connect(drgArea, "expose-event",
            G_CALLBACK(on_draw), NULL);
  gtk_main();

  return 0;
}

1 个答案:

答案 0 :(得分:2)

这可能与你的合成器/窗口管理器有关。

使用肉桂[2.0.14]在启动应用程序时显示2重绘(无论我使用gtk3 / 3.10.6 /“draw”还是gtk2 / 2.24.22 /“expose-event”)