Layout 如何在GTK窗口运行时自动调整其大小';什么是隐藏的?

Layout 如何在GTK窗口运行时自动调整其大小';什么是隐藏的?,layout,resize,window,gtk,gtk#,Layout,Resize,Window,Gtk,Gtk#,在我的应用程序中,我有两个切换按钮,可以更改窗口的布局。他们将删除或添加按钮,从而有效地更改请求的总大小。由于该窗口的Resizeable属性设置为false,因此通常该窗口会自动调整大小以适应其内容,无论内容是比以前大还是更小 但是,如果在隐藏窗口时更改布局,则在使其可见后,窗口的尺寸将不会更改以适应布局。它会自动调整大小后,我移动它左右 //Code example Window.Hide(); ChangeLayout(Window); Window.Show(); 我假设GTK在容器不

在我的应用程序中,我有两个切换按钮,可以更改窗口的布局。他们将删除或添加按钮,从而有效地更改请求的总大小。由于该窗口的Resizeable属性设置为false,因此通常该窗口会自动调整大小以适应其内容,无论内容是比以前大还是更小

但是,如果在隐藏窗口时更改布局,则在使其可见后,窗口的尺寸将不会更改以适应布局。它会自动调整大小后,我移动它左右

//Code example
Window.Hide();
ChangeLayout(Window);
Window.Show();
我假设GTK在容器不可见时跳过检查大小变化。有没有办法强迫它重新计算它的大小

多谢各位


注:这似乎只发生在Windows中。也许这与操作系统有关?

我没有windows机器来测试它,但请尝试以下解决方法:

Window.Hide();
ChangeLayout(Window);
Window.Unrealize();
Window.Show();
您还可以尝试在更改布局之前将窗口设置为可调整大小,然后将其设置为不可调整大小:

Window.Hide();
Window.Resizable = true;
ChangeLayout(Window);
Window.Resizable = false;
Window.Show();
这里有一个关于这个问题的例子。