gpt4 book ai didi

使用 GtkBuilder 时无法更改 GtkWindow 大小

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:09 24 4
gpt4 key购买 nike

我将 GtkBuilder 与 Glade XML 文件一起使用。我想在不使用 gtk_window_fullscreen 方法的情况下将窗口的大小更改为全屏(因为这需要在没有窗口管理器的情况下工作),所以我获取屏幕尺寸并将窗口设置为该尺寸。这曾经在我以编程方式创建小部件时起作用,但是当我切换到 Glade/GtkBuilder 时,窗口的尺寸与在 Glade 编辑器中一样小。我是否必须对 GtkBuilder 做一些不同的事情?这是代码:

#include <gtk/gtk.h>

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

GtkBuilder *builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "dm.ui", NULL);

GObject *window = gtk_builder_get_object(builder, "window");

// Make full screen
GdkScreen *screen = gdk_screen_get_default();
gint height = gdk_screen_get_height(screen);
gint width = gdk_screen_get_width(screen);
gtk_window_set_default_size(GTK_WINDOW(window), width, height);

g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

gtk_main();
}

这是 XML 文件,dm.ui:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.2 -->
<interface>
<requires lib="gtk+" version="3.12"/>
<object class="GtkWindow" id="window">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLayout" id="main_layout">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkEntry" id="user_text_field">
<property name="width_request">162</property>
<property name="height_request">31</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_right">42</property>
</object>
<packing>
<property name="x">175</property>
<property name="y">73</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="user_label">
<property name="width_request">100</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Username</property>
</object>
<packing>
<property name="x">71</property>
<property name="y">46</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="password_label">
<property name="width_request">100</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Password</property>
</object>
<packing>
<property name="x">72</property>
<property name="y">103</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="password_text_field">
<property name="width_request">162</property>
<property name="height_request">31</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="x">177</property>
<property name="y">129</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

最佳答案

你可以尝试使用

void gtk_widget_set_size_request(GtkWidget *widget, gint width, gint height);

或者您可以使用 Glade 调整“默认宽度”和“默认高度”的 GtkWindow 属性,而不是对其进行硬编码。让我知道结果。p.s:这就是我讨厌 Glade 的原因 :(

关于使用 GtkBuilder 时无法更改 GtkWindow 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23531224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com