gtk 如何实现控件拖动
本帖最后由 qfmeal 于 2011-05-11 14:14 编辑
我想实现这样的功能:
在fixed里面放置一个人button,用鼠标点击button后不松,能拖着这个button在fixed里面移动。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
本帖最后由 qfmeal 于 2011-05-11 14:14 编辑
我想实现这样的功能:
在fixed里面放置一个人button,用鼠标点击button后不松,能拖着这个button在fixed里面移动。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
没有人知道吗?
有想法,给个提示也好 ……
没接触过GTK
有没有location一类的方法或属性
先捕捉mouseDown事件
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;
}
回复 4# fengtom_lcdtv
前段时间比较忙,没有来得及开贴。
用了你的代码,还是没有实现控件移动,有更好的办法吗?