【问题标题】:How to make a gtk application go fullscreen overcoming the window manager (gtk_window_fullscreen does not apply)如何克服窗口管理器使 gtk 应用程序全屏显示(gtk_window_fullscreen 不适用)
【发布时间】:2017-05-02 09:08:14
【问题描述】:

我正在尝试制作启动时全屏显示的 gtk 应用程序。 UI 是在 glade 中制作的,它包含一个 MainWindow、框架和一个标签。我需要在标签上显示一些信息,所以它必须是全屏的。我有一台尺寸为1366x768 的显示器。我已将主窗口、框架和标签的宽度和高度设置为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;

}

启动时如下所示:

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

【问题讨论】:

  • 当您将应用程序(浏览器等)置于全屏模式时,也会发生这种情况,对吧?窗口管理器不允许窗口占用额外的空间。您可以将栏设置为自动隐藏吗?
  • @JoséFonte 不,我也试过这个。它没有用。我将它设置为自动隐藏,但那个栏空间仍然存在。
  • 那是窗口管理器的问题,不是 gtk。尝试禁用 ubuntu 停靠栏一段时间。
  • 试试 gtk_widget_set_size_request
  • 阅读reference。 default_size 允许缩小窗口,但 set_size_request 设置了最小尺寸(问题是你不能在之后将其缩小到小于该尺寸)。

标签: c gtk fullscreen


【解决方案1】:

设置全屏模式:

gtk_window_fullscreen(GTK_WINDOW(window));

【讨论】:

    【解决方案2】:

    用途:

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

    缺点,窗口不能缩小到比这小的尺寸。来自api reference

    设置小部件的最小尺寸;也就是widget的size请求 将至少是 width by height 。您可以使用此功能强制 一个比通常更大的小部件。 在大多数情况下,gtk_window_set_default_size() 是更好的选择 顶层窗口比这个函数;设置默认大小将 仍然允许用户缩小窗口。设置大小请求将 强制他们离开窗口至少与请求的大小一样大。

    注意:

    对于那些不阅读该主题的人。问题正是关于克服窗口管理器。 gtk_window_fullscreen 不是问题指出的解决方案:

    然后我阅读了文档,发现我需要包含 gtk_window_fullscreen。但它仍然没有进入全屏模式。谁能告诉我如何使这个窗口全屏显示。请帮忙

    从问题cmets中可以看出:

    谢谢。使用 gtk_widget_set_size_request 有效

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

    要在普通应用程序和大多数情况下使窗口全屏,显然,开发人员应该使用gtk_window_fullscreen...

    【讨论】:

      【解决方案3】:

      您可以使用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();
      

      查看 GTK Window 参考:https://developer.gnome.org/gtk2/stable/GtkWindow.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多