gtk 如何实现控件拖动

发布于 2022-10-15 07:17:25 字数 147 浏览 27 评论 0

本帖最后由 qfmeal 于 2011-05-11 14:14 编辑

我想实现这样的功能:
在fixed里面放置一个人button,用鼠标点击button后不松,能拖着这个button在fixed里面移动。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

中二柚 2022-10-22 07:17:25

没有人知道吗?

有想法,给个提示也好 ……

写给空气的情书 2022-10-22 07:17:25

没接触过GTK
有没有location一类的方法或属性
先捕捉mouseDown事件

痴意少年 2022-10-22 07:17:25

g_signal_connect(GTK_OBJECT(button), "button-press-event", G_CALLBACK (test_button_press), NULL);
        g_signal_connect(GTK_OBJECT(button), "button_release_event", G_CALLBACK(test_on_release_event), (gpointer)(_WINDOW));
        g_signal_connect(GTK_OBJECT(button), "motion-notify-event", G_CALLBACK(test_motion_notify), NULL);

gboolean test_on_release_event(GtkWidget *widget, GdkEventButton *event, gpointer type)
{
        g_print("release button\n");
       
        return TRUE;
}

gboolean test_button_press(GtkWidget *widget, GdkEvent *event, gpointer data)
{
        g_object_set_data(G_OBJECT(widget), "pressed", (gpointer)(1));

        return TRUE;
}

gboolean test_motion_notify(GtkWidget *widget, GdkEvent *event, gpointer data)
{
        GtkAllocation allocation;

        gint pressed;

        pressed = (gint)g_object_get_data (G_OBJECT(widget), "pressed");

#if GTK_MINOR_VERSION >= 18
        gtk_widget_get_allocation (widget, &allocation);
#else
        allocation = widget->allocation;
#endif

                button_hposition = allocation.x;
        button_vposition = allocation.y;

        if(pressed)
        {
                gtk_fixed_move(GTK_FIXED(fixed), widget, button_hposition, button_vposition);
        }

        return TRUE;
}

嘦怹 2022-10-22 07:17:25

回复 4# fengtom_lcdtv

    前段时间比较忙,没有来得及开贴。
用了你的代码,还是没有实现控件移动,有更好的办法吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文