【问题标题】:Some problems [warnings] by working with GtkTreeView in GTK+在 GTK+ 中使用 GtkTreeView 的一些问题 [警告]
【发布时间】:2011-02-05 19:08:26
【问题描述】:

我已经有一个 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'

这是 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>

你能解释一下为什么我会收到警告吗?

【问题讨论】:

    标签: c++ gtk glade


    【解决方案1】:
    <attribute name="xalign">0</attribute>
    <attribute name="sensitive">0</attribute>
    <attribute name="text">0</attribute>
    

    这表示您希望将单元格渲染器的 xalignsensitivetext 属性设置为第 0 列的值.

    例如,如果模型中的一行如下所示:

    column0=A  column1=B  column2=C
    

    xml 中的那些行会将第一个单元格的 xalignsensitivetext 设置为 A,无论 A 是什么值,这很可能不是你想要的。


    在 Glade 中,您可以通过右键单击树视图,选择 Edit...,然后转到 Hierarchy 选项卡来更改这些设置。您应该会看到三列,每列都有一个单元格渲染器。

    其余的取决于你想做什么。如果你不知道 xalignsensitive 是什么,它们可能是不小心设置的,所以只需将它们改回 -1(这相当于从 XML 中删除相应的 attribute 元素)。 text 可能是正确的,所以保留为 0。

    如果您想了解更多关于单元格渲染器属性的信息,您可能可以从tree widget overviewTreeViewColumn.add_attribute documentation 开始。不幸的是,这些并没有很清楚地解释这个概念;您可能会在其他地方得到更好的解释。

    【讨论】:

    • 好的,我必须在 XML 中设置的 xalign,sensitive,text 的值是多少?
    • 而我可以在 Glade 中更改此属性的地方,我做不到
    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 2022-01-08
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多