我想最大化我的小部件,然后使它变得不可调整。我可以最大化小部件:

gtk_window_maximize(GTK_WINDOW(window));

但当我试图使它不可调整时:
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);

窗口失去了最大化状态;它恢复到原来的大小。
为什么?如何使控件最大化,使其不可调整?

最佳答案

免责声明:此答案仅作为解决方法提出,并不能真正解决问题。
在跟踪@ptomoto的链接之后,这是我得到的最接近的东西:

int main(int argc, char *argv[]) {
    gtk_init(&argc, &argv);

    GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show(win);

    GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(win));
    GdkRectangle rect;
    gdk_screen_get_monitor_workarea(screen, 0, &rect);

    gtk_window_move(GTK_WINDOW(win), rect.x, rect.y);

    gtk_widget_set_size_request(win, rect.width, rect.height);
    gtk_window_set_resizable(GTK_WINDOW(win), FALSE);

    gtk_main();
    return 0;
}

但是,这仍然不是完美的,并且不同于最大化窗口的方式(使用默认Ubuntu 14.04主题进行测试):
窗口的宽度和高度比监视器大小减去标题栏和启动栏的大小稍大(几像素)。
除了系统标题栏,窗口还有自己的标题栏。
您可以移动窗口,而您不应该能够,如果它是不可移动的。

关于c - 无法使小部件不可调整大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30018202/

10-13 06:18