我正在尝试保存gtk窗口位置(绝对值)以恢复它我再次打开应用程序
到目前为止,这是我的代码:
gint x,y;
gtk_window_get_position(main_window,&x,&y);
printf("current position is:\nx: %i\ny:%i\n",x,y);
这个代码在应用程序退出时运行,我总是得到: 目前的位置是: x:0 Y:0
我做错了什么。
答案 0 :(得分:4)
gtk_window_get_position
通常会做出最佳猜测,但你不能依赖它,因为
X Window系统没有指定获取几何的方法 窗户经理把装饰品放在窗户上。
(来自gtk_window_get_position reference)
要查看正在使用的功能,请尝试以下操作:
#include <gtk/gtk.h>
int main(int argv, char* argc[])
{
GtkWidget *window, *button;
gint x, y;
gtk_init(&argv, &argc);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Test Window");
button = gtk_button_new_with_label("Close");
g_signal_connect(G_OBJECT(button), "clicked",
G_CALLBACK(gtk_main_quit), (gpointer)NULL);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
gtk_container_add(GTK_CONTAINER(window), button);
gtk_window_get_position(GTK_WINDOW(window), &x, &y);
printf("current position is:\nx: %i\ny:%i\n", x, y);
gtk_window_set_position(GTK_WINDOW(window),
GTK_WIN_POS_CENTER_ALWAYS);
gtk_window_get_position(GTK_WINDOW(window), &x, &y);
printf("new position is:\nx: %i\ny:%i\n", x, y);
gtk_widget_show_all(window);
gtk_main();
}
修改强>
如果您希望窗口出现在特定位置,您可以尝试以下方式:
gtk_window_move(GTK_WINDOW(window), 420, 180);
但是上面的功能应放在
之后gtk_widget_show_all(window);
,因为
大多数窗口管理器忽略对初始窗口位置的请求 (而不是使用用户定义的放置算法)并尊重请求 窗口显示后。
答案 1 :(得分:0)