Я хочу преобразовать свой 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
Спасибо, Джимит
Если вы посмотрите на документация, вы увидите, что есть функция
gtk_selection_data_set_pixbuf(GtkSelectionData*, GdkPixbuf*)
который делает именно то, что вы хотите.
Вопрос в том, где взять GtkSelectionData
от? Ответ заключается в том, что обычно, когда происходит отбрасывание (или нажатие средней кнопки мыши), GTK запускает обратный вызов, дающий вам указатель данных выбора и запрашивающий заполнить его фактическими байтами, которые должны быть переданы.
Но весь материал перетаскивания / буфера обмена ужасно сложен в GTK. В вики Gnome есть пара учебных пособий, которые помогают, но я бы посоветовал прочитать их 🙂
Других решений пока нет …