想要将“GdkPixbuf”转换为“GtkSelectionData”对象

时间:2014-01-22 08:34:51

标签: c++ c gtk clipboard

我想将我的pixbuf转换为“GtkSelectionData”,那么我怎么能用c ++转换呢? 以下是我的示例代码。

clipboard   =   gtk_clipboard_get_for_display (gdk_display_get_default (),
                                                     GDK_SELECTION_CLIPBOARD);
                GdkPixbuf *pixbuf;
                pixbuf = gtk_clipboard_wait_for_image ( clipboard );

                if ( pixbuf != NULL )
                {
                    int width, height;
                    width  = gdk_pixbuf_get_width (pixbuf);
                    height = gdk_pixbuf_get_height (pixbuf);
                    //printf("width : %d", width);
                    GtkSelectionData *selectionData;
                gtk_selection_data_set_pixbuf(selectionData,pixbuf);
                g_object_unref (pixbuf);

                 }

Error: cannot convert ‘GdkPixbuf* {aka _GdkPixbuf*}’ to ‘GtkSelectionData* {aka _GtkSelectionData*}’ in initialization

谢谢,Jimit

1 个答案:

答案 0 :(得分:1)

如果你看the documentation,你会看到有一个功能

gtk_selection_data_set_pixbuf(GtkSelectionData*, GdkPixbuf*)

完全符合你的要求。

那么问题是,你从哪里得到GtkSelectionData?答案是通常,当发生丢弃(或按下中键)时,GTK会运行一个回调,为您提供选择数据指针,并要求您使用应传输的实际字节填充它。

但是整个拖放/剪贴板的东西在GTK中非常复杂。有关Gnome wiki的一些教程有帮助,但我建议阅读它们: - )