【问题标题】:GdkPixbuf CollectionGdkPixbuf 集合
【发布时间】:2010-07-02 10:22:39
【问题描述】:

我需要创建 GdkPixBuf 集合。我尝试在 GList 中保存 pixbufs - mw->disp_list:

GtkTreeIter iter;
int i = 0;

for (i; i < g_list_length(list) - 1; ++i)
{                       
  char* file = image_list_get_current_file_path( list );

  mw->p1 = gdk_pixbuf_new_from_file(file,NULL);
  mw->p1 = scale_pix(mw->p1,128);

  mw->disp_list = g_list_append (mw->disp_list, mw->p1);

  if (!mw->img_list->current->next )
      image_list_get_first(mw->img_list);
  else
      image_list_get_next(mw->img_list);
}

其中 p1 - 它是 GtkPixBuf*。

但是当我尝试在另一个函数中使用 mw->disp_list 时,我发现它为 NULL。怎么了?

谢谢。

【问题讨论】:

  • 首先,我注意到 for 循环很奇怪;你不需要 for 的第一部分,如果你在它外面初始化循环变量:for(; i &lt; ... 没问题,而for(i; i &lt;... 也可以工作,但我没有理由被评估;通常你写一个像for(i=0; i &lt; ...这样的循环,你可以简单地写int i;而不是int i = 0;
  • 关于循环的另一个说明; i &lt; g_list_length(list) 是正确的;除非使用 -1,否则您的意思是您想再循环一个列表的长度(假设您想使用 i 作为“索引”;在这种情况下,您会错过最后一个可索引元素;没有 -1,您循环一个列表中每个元素的时间)

标签: c gtk gdk


【解决方案1】:

目前我只看到一个问题,应该是关于循环的:

for (i = 0; i < g_list_length(list); ++i)

问题可能是 -1:如果列表包含 1 个元素,则根本不循环,因为 1-1 = 0 且 0 &lt; 0 为假。

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    相关资源
    最近更新 更多