nixp.ru v3.0

27 мая 2017,
суббота,
22:21:28 MSK

DevOps с компанией «Флант»
decvar написал 4 апреля 2004 года в 21:46 (388 просмотров) Ведет себя как мужчина; открыл 111 тему в форуме, оставил 1838 комментариев на сайте.

Не знаю, есть ли смысл спрашивать здесь о тоекостях работы GObject…но поскольку я не знаю ни одного толкого форума по НЕ-виндовс программированию — спрашиваю здесь.

Значит есть:

GtkWidget *list1;
....
...
list1 = gtk_list_new ();
  gtk_widget_show (list1);
  gtk_container_add (GTK_CONTAINER (frame1), list1);
  gtk_widget_set_size_request (list1, 150, 195);
  gtk_container_set_border_width (GTK_CONTAINER (list1), 10);
....
....

По доке из devhelp сказанно, что его элементы — GList. По другой(с developer.gnome.org) его элементы — GtkListItem….самое странно, что при компиляции нет ошибок на оба варианта, но оба варианта выпадают в SegFault…

Заполнаяю я их вот-так:

char items[BUFSIZ];
GtkListItem *ViewItems[5];
...
....
file=open("/home/decvar/rapid/items",O_RDONLY);
      if (file<0)
      {
            perror("Can't load items file"); exit(2);
      }
      /*read Install items file*/
      nread = read(file,items,BUFSIZ);
      if (nread<0)
      {
            perror("Cant read items file");exit(3);
      }
....
....
/*      parcing items file */
      
      printf("DEBUG:\nstrtok:\n");  //debug
      temp = strtok(items,"$");
      i=0;
      while (temp!=NULL){
            printf(" I:%d \n %s\n",i,temp);  //debug
            ViewItems[i]=gtk_list_item_new_with_label(temp);
            temp = strtok(NULL, "$");
            i++;
      }
      printf("%s",ViewItems[0]);
gtk_list_append_items(list1,ViewItems);

При замене

GtkListItem *ViewItems[5] -> Glist *ViewItems[5]

gtk_list_item_new_with_label(temp) -> g_list_append(ViewItems, temp).

все собирает и не матрится, тока то же SegFault…

Если нужна еще инфа — положу…

Uncle Theodore

Я в GTK не рублю, но просто интересно, а где именно прога сегфолтает? Попробуй каким-нить дебаггером подцепить гнилую функцию…

Good Luck,

UT

decvar

В последней функции, причем в обоих вариантах. Так что вопрос в том кто есть child для GtkList?

Возможно это

GtList

|->GtkListItem

|->GList

Так что вопрос именно про тонкости в GTK.

Возмозно я на все плюну, и буду просто другой виджет пользовать….осталось понять — какой?

decvar

Проблема решилось заменой GtkList на GtkTree*

да и красивее заметно получилось, и список не плоский….

короче DevHelp рулит!