1

我为我的程序编写 GUI。

我的函数进行一些计算并接收数据数组。我想使用 cairo 绘制这些数据。

    //我的计算函数代码

    GtkWidget *darea;
    GtkWidget *box;
    darea = gtk_drawing_area_new();
    gtk_widget_set_size_request (darea, 100, 100);
    box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
    gtk_box_pack_start(GTK_BOX(盒子),darea,FALSE,FALSE,0);
    gtk_table_attach_defaults(GTK_TABLE(table), box, 0, 1, 1, 2);

    g_signal_connect(G_OBJECT(darea), “画”,
        G_CALLBACK(on_draw_event), NULL);

但是“draw”信号没有发出(on_draw_event 回调函数没有启动)。在我的函数中计算后如何发出“绘制”信号?谢谢。

4

2 回答 2

2

使用gtk_widget_queue_draw()并传入您要重绘的小部件:

gtk_widget_queue_draw(darea)

这会为小部件的整个区域发出“绘制”信号。

于 2018-08-09T18:49:06.723 回答
1

重绘小部件时会发出'draw'信号,更详细的文档可以在这里找到:gtkwidget - draw signal

于 2013-06-18T12:51:21.670 回答