【问题标题】:How to emmit "draw" signal from function in GTK cairo如何从 GTK cairo 中的函数发出“绘制”信号
【发布时间】:2013-06-18 11:38:10
【问题描述】:

我为我的程序编写 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 回调函数没有启动)。在我的函数中计算后如何发出“绘制”信号?谢谢。

【问题讨论】:

    标签: linux gtk signals draw cairo


    【解决方案1】:

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

    gtk_widget_queue_draw(darea)
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗯,你能解释一下如何使用这些功能吗?例如,如果我的绘图信号回调函数看起来像void on_draw_event(GtkWidget *widget, cairo_t *cr, gpointer user_data)。但是g_signal_emit_by_name(G_OBJECT(darea), "draw"); 不起作用
      • 试试 gtk_widget_queue_draw():developer.gnome.org/gtk3/3.2/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 2012-01-07
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多