无法使Widget不可调整大小

时间:2015-05-03 19:10:34

标签: c gtk gtk2

我想最大化我的Widget然后使其不可调整大小。我可以通过以下方式最大化Widget:

JComboBox comboBox = new JComboBox(...);
frame.setLayout( new GridBagLayout() );
frame.add(comboBox, new GridBagConstraints());

但是当我试图通过以下方式使其无法调整大小时:

gtk_window_maximize(GTK_WINDOW(window));

窗户失去了最大化的状态;它恢复到原来的大小。

为什么呢?如何最大化Widget并使其不可调整大小?

1 个答案:

答案 0 :(得分:1)

免责声明:此答案仅作为解决方法提出,并未实际解决问题。

在关注@ ptomato的链接之后,这是我最接近的事情:

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主题测试):

  1. 窗口的宽度和高度比显示器尺寸减去标题栏和启动栏略大(几个像素)。

  2. 除了系统标题栏外,该窗口还有自己的标题栏。

  3. 您可以移动窗口,但如果最大化则不应该移动。