【问题标题】:How to dynamically insert and remove rows如何动态插入和删除行
【发布时间】:2016-08-17 18:52:00
【问题描述】:

我正在寻找一个可以动态调整大小的小部件。我需要追加和删除行。 Grid 附带了一个方法,例如 gtk_grid_insert_rowgtk_grid_insert_next_to,但我没有找到任何 xxx_remove_xxx 方法。

我正在开发一个简单的 http 客户端(用于测试 api)。而且我正在添加动态附加和删除“GET”变量的可能性。

UI 由包含组合框(用于变量选择)、条目(用于其值)和最后一行的删除按钮的行组成。

每次我设置一个变量时,都会添加一个新行(新的可用变量)。 并且每次我取消设置一个变量时,相应的行都会被删除。

谢谢。

【问题讨论】:

    标签: gtk3 vala


    【解决方案1】:

    Gtk.Grid 没有 remove 方法;但 Gtk.Container 可以。由于 Grid 是一个 Container,您可以使用 gtk_container_remove。

    这方面的文档在这里: https://developer.gnome.org/gtk3/3.8/GtkContainer.html#gtk-container-remove

    【讨论】:

    • 感谢答案,但 gtk_container_remove 删除了一个 GtkWidget,它是我需要删除的整个网格行。每次添加新行时,我都必须调用 insert_row 以确保网格中有足够的行。而且我不确定如果一行是空的,它将被删除。
    • 在这种情况下,也许最好编写一个“行小部件”并将其中的多个打包到一个 HBox 中?这样您就可以只使用一个指针来删除/添加。
    【解决方案2】:

    我认为您正在寻找的小部件是Gtk.ListBox。它是一个容器,因此您可以轻松地进行addremove 行。

    【讨论】:

    • 我制作了一个小部件,将 Gtk.Box(代表线条)扩展到垂直 Gtk.Box,它可以工作。 Gtk.ListBox 看起来不错,但我在未来的更新中使用 gtk3.8(ListBox 需要 3.9)。谢谢。
    • 您的链接已失效。
    • @Cptn_Hammer 我刚刚解决了这个问题 :) 现在它们应该可以工作了!
    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多