【问题标题】:How to capture mouse click on Gtk.Stack如何在 Gtk.Stack 上捕获鼠标点击
【发布时间】:2015-08-08 15:38:07
【问题描述】:

我想仅在用户单击选项卡时加载选项卡的内容。是否有一些堆栈或小部件的属性可以用于此。我正在 Vala 中编码,我目前通过在 UI 的构建上加载内容来解决这个问题。一段示例代码会有很大帮助。

提前致谢!

【问题讨论】:

  • 我不太明白。你想做什么,为什么?
  • 基本上,我正在用 GTK+3 开发一个 Network Utility 应用程序 (Nutty)。应用程序的每个选项卡都有用于不同功能的各种选项卡 - 基本网卡信息、到站点/IP 的跟踪路由、打开端口、网络上的设备发现。虽然每个选项卡都有用户启动的信息,但端口信息选项卡应该在没有任何用户交互的情况下打开带有信息的选项卡。目前,我在 UI 构建时填充选项卡中的信息,这会使应用程序打开时有一点延迟,如果在运行时单击选项卡时填充信息,则可以避免这种情况。
  • Launchpad 上的 Nutty,以防万一有人想查看源代码或屏幕截图:launchpad.net/nutty
  • 啊。在这种情况下,您可能应该连接到堆栈的 "notify::visible-child""notify::visible-child-name" 信号(有关 "notify" 信号的描述,请参阅 here),并且仅在所需页面切换到时加载/更新您的数据.您甚至可以在加载数据时使用 GtkOverlay 或类似的东西来显示 GtkSpinner。
  • @andlabs :感谢您的建议。我能够用 Stack 的通知信号捕捉到选项卡的点击。这是vala代码sn-p,以防有人从中受益:

标签: gtk vala


【解决方案1】:

取自 OP 评论:

stack.add_titled (ports_layout_box, "my-tab", "FOO");
stack.notify["visible-child-name"].connect ((sender, property) => { 
        if ("my-tab" == stack.get_visible_child_name ()) { 
            // TO DO
        } 
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2013-02-04
    • 2010-09-28
    • 2021-02-14
    • 1970-01-01
    相关资源
    最近更新 更多