LINUX.ORG.RU

[GTK+] Вылетают непонятные warnings при работе с GtkTreeView


0

1

Создал GTK+ приложение, всю визуализацию сделал в Glade. Компилится нормально, но при запуске вылетает куча warning. См. ниже

int main( int argc, char **argv )
{
    GtkBuilder *builder;
    GtkWidget *topWindow;
    GtkTreeView *treeView;
    GtkListStore  *treeStore;
        
    GError *error = NULL;
    gtk_init( &argc, &argv ); 
    builder = gtk_builder_new();
    if( ! gtk_builder_add_from_file( builder, UI_FILE, &error ) )
    {
        g_warning( "%s", error->message );
        g_free( error );
        return( 1 );
    }
 

   topWindow = GTK_WIDGET(gtk_builder_get_object(builder, "topWindow"));
   treeStore = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore"));
   treeView = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview"));
   
   entry1 = GTK_ENTRY(gtk_builder_get_object(builder, "entry1"));
   entry2 = GTK_ENTRY(gtk_builder_get_object(builder, "entry2"));
   entry3 = GTK_ENTRY(gtk_builder_get_object(builder, "entry3"));
   
   gtk_builder_connect_signals (builder, NULL); 
   g_object_unref( G_OBJECT( builder ) );
   
   gtk_widget_show( topWindow );
 
   gtk_main();

   return( 0 );
}

При выполнении программы сразу же вылетают WARNING,

(charter:3728): GLib-GObject-WARNING **: value "466" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "44" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "466" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "466" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "44" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "44" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "466" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "466" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "44" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

(charter:3728): GLib-GObject-WARNING **: value "44" of type `gint' is invalid or out of range for property `xalign' of type `gfloat'

Вот как в Glade XML описывается GtkTreeView

 <object class="GtkTreeView" id="treeview">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="model">liststore</property>
                <property name="search_column">2</property>
                <child>
                  <object class="GtkTreeViewColumn" id="treeviewcolumn1">
                    <property name="title">&#x418;&#x43C;&#x44F;</property>
                    <child>
                      <object class="GtkCellRendererText" id="cellrenderertext1"/>
                      <attributes>
                        <attribute name="xalign">0</attribute>
                        <attribute name="sensitive">0</attribute>
                        <attribute name="text">0</attribute>
                      </attributes>
                    </child>
                  </object>
                </child>
                <child>
                  <object class="GtkTreeViewColumn" id="treeviewcolumn2">
                    <property name="title">&#x418;&#x43A;&#x441;</property>
                    <child>
                      <object class="GtkCellRendererText" id="cellrenderertext2"/>
                      <attributes>
                        <attribute name="text">1</attribute>
                      </attributes>
                    </child>
                  </object>
                </child>
                <child>
                  <object class="GtkTreeViewColumn" id="treeviewcolumn3">
                    <property name="title">&#x418;&#x433;&#x440;&#x435;&#x43A;</property>
                    <child>
                      <object class="GtkCellRendererText" id="cellrenderertext3"/>
                      <attributes>
                        <attribute name="text">2</attribute>
                      </attributes>
                    </child>
                  </object>
                </child>
              </object>
            </child>
            <child type="label">
              <object class="GtkLabel" id="label1">
                <property name="visible">True</property>
                <property name="label" translatable="yes"><b>TreeView</b></property>
                <property name="use_markup">True</property>
              </object>
            </child>
          </object>

В чём может быть проблема?


Там в определении для liststore по которому заполняется TreeView колонкам должны соответствовать правильные типы.Где-то в начале вроде такого

  <object class="GtkListStore" id="liststore">
    <columns>
      <!-- column-name A -->
      <column type="gchararray"/>
      <!-- column-name B -->
      <column type="gint"/>
      <!-- column-name C -->
      <column type="gchararray"/>
      <!-- column-name D -->
      <column type="GdkPixbuf"/>
Видно типы неверны или перепутаны

anonymous
()
Ответ на: комментарий от g-71

а где его в Glade я могу выставить?

Насколько знаю, только через модель или в коде.

<object class="GtkCellRendererText" id="cellrenderertext1"/>
   <attributes>
       <attribute name="xalign">0</attribute>
       <attribute name="sensitive">0</attribute>
       <attribute name="text">0</attribute>
   </attributes>

В этом куске говорится, что значение для xalign, sensetive и text будут взяты из первой колонки модели. Очевидно надо убрать лишние свойства или сослать их на другую колонку.

baverman ★★★
()

для cellrenderertext1 у тебя все прописаные атрибуты будут браться из модели, из 0-й колонки. и если sensitive имеет такой-же тип, как и данные, то у xalign он другой

в glade, в режиме редактирования treeview, для свойств соответствующего renderer-а сними галку с атрибута «горизонтальное выравнивание» и в появившемся поле введи нужное тебе значение. кстати, с чуствительностью рекомендуется поступить также

ananas ★★★★★
()
Ответ на: комментарий от ananas

сними галку с атрибута

Никогда бы сам не догадался. Спасибо.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.