GTK Iconview 显示 GIF

问题描述

是否可以在图标视图中显示 GIF?

我正在使用 GTK rust 并有一个带有字符串和 Pixbuf 列的图标视图,这适用于显示图像和一些文本。

是否可以用 PixbufAnimation 替换 Image Pixbuf 来显示 gif?

当我把它直接放到我的代码中时,我收到了这个错误

Gtk-CRITICAL **: 20:04:29.359: gtk_icon_view_set_pixbuf_column: assertion 'column_type == GDK_TYPE_PIXBUF' Failed

但我找不到动画的列类型。

我正在使用 gtk rust,所以这是我的代码部分,处理 iconview 示例:

// SNIP //
// And finally set text column and pixbuf column using enum
icon_view.set_text_column(0);
icon_view.set_pixbuf_column(1);
icon_view.set_pixbuf_column(2);}

// enum so we can have gifs and static images be stored
enum PixBuffer {
    Pix(Pixbuf),Anim(PixbufAnimation),}

fn create_list_store_model() -> gtk::ListStore {
    // Initialize an array of column types for ListStore object. Here we say that the first item 
    let col_types: [glib::Type; 3] = [glib::Type::String,gdk_pixbuf::Pixbuf::static_type(),gdk_pixbuf::PixbufAnimation::static_type()]; //gdk_pixbuf::PixbufAnimation::static_type()
    let view_model = gtk::ListStore::new(&col_types);

    let titles = vec!("Update","icon");
    let gifs = vec!(PixBuffer::Anim(PixbufAnimation::from_file("pathtogif.gif").unwrap()),PixBuffer::Pix(Pixbuf::from_file("pathtoimage.png").unwrap()));

    // let col_indices: [u32; 3] = [0,1,2];
    
    for (title,buffer) in titles.iter().zip(gifs) {
        match buffer {
            PixBuffer::Pix(pic)            => {
                view_model.insert_with_values(
                    None,&[0,1],&[&title,&pic]);
            },PixBuffer::Anim(gif)   => {
                view_model.insert_with_values(
                    None,2],&Image::from_animation(&gif)]);
            },}
        
        // view_model.set(&view_model.append(),&col_indices,&gif,&otr]);
    }

对于那个代码 2 项出现在 iconview 中标记为“更新”和“图标”,更新只显示文本而“图标”显示图像。

我看不到动画的任何列类型,所以可能是不可能的

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)