【问题标题】:How can I have a GTKLabel which changes based on mouse position?我怎样才能拥有一个根据鼠标位置变化的 GTKLabel?
【发布时间】:2017-05-23 17:52:30
【问题描述】:

我已阅读文档,但找不到任何相关内容。 例如,如果我有一个表格并将鼠标悬停在左上角,它会显示 (0, 0),它会根据我下一个鼠标的位置而相应更改。

【问题讨论】:

    标签: c++ gtk label mouseevent gtk2


    【解决方案1】:

    不确定您的目的是什么,可能有更好的方法来实现您的最终目标,但无论如何,

    您必须将信号连接到要跟踪鼠标的小部件。信号来自 GtkWidget,它被称为motion-notify-event。信号处理程序将接收带有鼠标 x 和 y 坐标的事件。

    如果您想在鼠标经过 GtkTable(继承自 GtkWidget)时对其进行跟踪,那么只需将信号连接到它并让回调更新 GtkLabel。

    编辑:

    正如@jku 所说,一些小部件没有收到这些事件,因为它们没有 GdkWindow。最好的选择可能是将表添加到 EventBox 容器中,然后按前面所述继续。另外,这个问题已经提出here

    【讨论】:

    • 最后一段有点误导:我很确定 Motion-notify-event 仍然只适用于具有 GdkWindow 的小部件,而 GtkTable 没有。还需要在小部件上设置 GDK_POINTER_MOTION_MASK 掩码。
    • @jku 有一些细微差别。我稍后会编辑消息,我在手机上,不是那么容易。可能是一个事件箱容器或只是启用运动蒙版标志......这个想法是为他指出正确的方向。感谢反馈
    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2015-08-06
    相关资源
    最近更新 更多