【问题标题】:Glade layout not reflecting when compiled / GTK_IS_APPLICATION assertion failed编译时 Glade 布局未反映 / GTK_IS_APPLICATION 断言失败
【发布时间】:2014-07-25 01:41:27
【问题描述】:

通过the GTK+ book 中的第 10 章教程代码,我遇到了 glade 和解释输出之间的以下不一致。在我看来,工具栏(它是垂直对齐框中的第一个元素)设置为展开,但我专门禁用了它,而是为 GtkTreeView 启用了它,这是同一个中的第三个元素盒子。

林间空地:

应用:

这是相关的 Glade XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
  <requires lib="gtk+" version="3.12"/>
      [...]
      <object class="GtkToolbar" id="toolbar1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="margin_bottom">123</property>
        <property name="toolbar_style">both</property>
        <property name="show_arrow">False</property>
        <property name="icon_size">2</property>
      </object>
      <packing>
        <property name="expand">False</property>
        <property name="fill">False</property>
        <property name="position">0</property>
      </packing>
      [...]
</interface>

这个简单的main()正在加载哪个:

void on_back_clicked(GtkToolButton *button);
void on_forward_clicked(GtkToolButton *button);
void on_up_clicked(GtkToolButton *button);
void on_refresh_clicked(GtkToolButton *button);
void on_home_clicked(GtkToolButton *button);
void on_delete_clicked(GtkToolButton *button);
void on_information_clicked(GtkToolButton *button);
void on_go_clicked(GtkToolButton *button);
void on_location_activate(GtkEntry *entry);
void on_row_activated(GtkTreeView *treeview, GtkTreePath *treepath, GtkTreeViewColumn *column);

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkBuilder *builder;

    gtk_init(&argc, &argv);
    builder = gtk_builder_new_from_file("browser.glade");
    window = GTK_WIDGET(gtk_builder_get_object(builder, "applicationwindow1"));

    gtk_builder_connect_signals(builder, NULL);

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

运行应用程序时我也收到以下错误:

(browser:4672): Gtk-CRITICAL **: gtk_application_get_menubar: assertion 'GTK_IS_APPLICATION (application)' failed

关于其中任何一个发生了什么的任何提示?

【问题讨论】:

  • 很难从一个巨大的 Glade 文件转储中分辨出来。书中缺少代码和参考代码,让人很容易说“你没有正确复制这本书”。您能否将 Glade 文件精简到相关部分,并包含您的代码的一些相关部分?
  • 可能会破坏您的应用程序的一件事是 GTK 书适用于 GTK 2,而您的代码似乎使用的是 GTK 3。
  • 西红柿 - 确实,先生。我一直在尽可能地关注差异,尽管在这种情况下,我想我只是不知道格莱德想让我做什么。至此,我已经从这个程序中添加了 main 函数。这只是获取小部件并连接信号(目前仅打印它们已被激活)。
  • 为了进一步澄清:我只放空地输出的原因是因为它似乎只是包装细节的问题(元素扩展不正确)。但据我所知,包装选项设置正确。
  • 删除内容,直到问题消失。添加内容,直到问题再次出现。如果您达到该状态,请尝试删除不相关的小部件(如在其他子树中)。然后发布那个完整的但更短的gtkbuilder/glade文件,我会简要地看一下。

标签: c xml linux gtk glade


【解决方案1】:

嗯,这很愚蠢。正如现在阅读的任何人都可能看到的那样,我设法添加了一个 123 像素的底部边距,而没有注意到。这是我第一次使用 Glade,我有点累,所以我很快就慌了。

无论如何,感谢ptomatodrahnr 为我指明了正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多