如何使 gtk 应用程序全屏显示 window 管理器(gtk_window_fullscreen 不适用)

How to make a gtk application go fullscreen overcoming the window manager (gtk_window_fullscreen does not apply)

我正在尝试制作启动时会全屏显示的 gtk 应用程序。 UI 是在 glade 中制作的,它包含一个主窗口、框架和一个标签。我需要在标签上显示一些信息,所以它必须是全屏的。我有一个大小为 1366x768 的显示器。我已将 MainWindow、框架和标签的宽度和高度设置为 1366x768。下面是代码:

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

GtkBuilder      *builder;
GtkWidget       *window;
GError     *error = NULL;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
if( ! gtk_builder_add_from_file( builder, "UI.glade", &error ) )
{
        g_warning( "%s", error->message );
        g_free( error );
        return( 1 );
}
window = GTK_WIDGET(gtk_builder_get_object(builder, "MainWindow"));
frame1 = GTK_WIDGET(gtk_builder_get_object(builder, "frame1"));
gtk_builder_connect_signals(builder, NULL);
g_signal_connect (window, "delete_event", G_CALLBACK (on_MainWindow_destroy_event), NULL);
label1 = GTK_WIDGET(gtk_builder_get_object(builder, "label1"));
g_object_unref(builder);
GdkColor black = {0, 0x0000, 0x0000, 0x0000};
GdkColor white = {0, 0xFFFF, 0xFFFF, 0xFFFF};
gtk_widget_modify_bg(frame1, GTK_STATE_NORMAL, &black); 
gtk_widget_modify_fg(frame1, GTK_STATE_NORMAL, &white);

gtk_widget_show(window);
gtk_main();
return 0;

}

启动时如下所示:

如您所见,window 不是全屏,因为左侧工具栏和顶部标题栏仍在显示。然后我阅读了文档,发现我需要包含 gtk_window_fullscreen但它仍然没有进入全屏模式。谁能告诉我如何让这个 window 全屏显示 。请帮忙。谢谢。

使用:

gtk_widget_set_size_request (GTK_WIDGET(window), 1366, 768);

缺点,window 无法缩小到比这更小的尺寸。来自 api reference:

Sets the minimum size of a widget; that is, the widget’s size request will be at least width by height . You can use this function to force a widget to be larger than it normally would be. In most cases, gtk_window_set_default_size() is a better choice for toplevel windows than this function; setting the default size will still allow users to shrink the window. Setting the size request will force them to leave the window at least as large as the size request.

注:

对于那些没有阅读主题的人。问题正是关于克服 window 经理。 gtk_window_fullscreen 不是问题指出的解决方案:

I then read the documentation and found out that I need to include gtk_window_fullscreen. But still its not coming in fullscreen mode. Can anyone please tell me how can I make this window fullscreen. Please help

从问题评论可以看出:

Thank You. Using gtk_widget_set_size_request worked

可能不建议使用此功能,因为它存在一些缺点,但仍然存在可能需要此解决方案的情况。

要在正常应用程序和大多数情况下实现 window 全屏,开发人员显然应该使用 gtk_window_fullscreen...

设置全屏模式:

gtk_window_fullscreen(GTK_WINDOW(window));

您可以使用 void gtk_window_fullscreen ():

设置 Fullscreen
gtk_window_fullscreen (GTK_WINDOW(gtk_widget_get_root_window (widget)));

此外,您可以使用 Maximize:

gtk_window_maximize (GTK_WINDOW(gtk_widget_get_root_window (widget)));

如果您想使用 GTK# 设置它,请使用:

Fullscreen();

或:

Maximize();

看一看GTKWindow参考:https://developer.gnome.org/gtk2/stable/GtkWindow.html