Некоторые проблемы [предупреждения] при работе с GtkTreeView в GTK + - PullRequest
1 голос
/ 05 февраля 2011

У меня уже есть приложение GTK +.Есть несколько виджетов: GtkWindow, GtkTreeView, GtkListStore.Весь пользовательский интерфейс был создан в Glade.

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 );
}

Компиляция прошла успешно:

igor@igor-desktop:~/proj/TreeView_example$ make
gcc -Wall -g `pkg-config --cflags gtk+-2.0 gmodule-2.0` -c charter.c
gcc `pkg-config --libs gtk+-2.0 gmodule-2.0` charter.o -o charter

Когда я запускаю приложение, я получаю несколько предупреждений:

(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'

Это часть XML-файла Glade, который содержит описание 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>

Можете ли вы объяснить, почему я получаю предупреждения?

1 Ответ

4 голосов
/ 06 февраля 2011
<attribute name="xalign">0</attribute>
<attribute name="sensitive">0</attribute>
<attribute name="text">0</attribute>

Это говорит о том, что вы хотите, чтобы свойства xalign , чувствительный и text средства визуализации ячеек были установлены в значение столбца 0.

Например, если строка в вашей модели выглядит следующим образом:

column0=A  column1=B  column2=C

эти строки в xml установят xalign , чувствительный и текст от первой ячейки до A , независимо от значения A, которое, скорее всего, не то, что вам нужно.


В Glade,Вы можете изменить эти настройки, щелкнув правой кнопкой мыши по дереву, выбрав Редактировать ... и перейдя на вкладку Иерархия .Вы должны увидеть три столбца с одним рендером ячейки в каждом.

Остальное зависит от того, что вы хотите сделать.Если вы не знаете, что такое xalign и чувствительные , они, вероятно, были установлены случайно, поэтому просто измените их обратно на -1 (это эквивалентно удалению соответствующих элементов attribute из XML). text , вероятно, является правильным, поэтому оставьте его равным 0.

Если вы хотите узнать больше об атрибутах средства визуализации ячеек, вы, вероятно, можете начать с обзора дерева и TreeViewColumn.add_attribute документация .К сожалению, они не очень ясно объясняют концепцию;Вы можете получить лучшее объяснение в другом месте.

...