You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GtkBox嵌入webkitgtk-6.0的WebKitWebView时无法显示的问题

GtkBox嵌入webkitgtk-6.0的WebKitWebView时无法显示的问题

嘿,这个问题我之前也踩过坑!核心原因在于GTK4的布局逻辑——GtkBox作为布局容器,会严格按照子控件的尺寸属性分配空间,而WebKitWebView默认既没开启扩展属性,也没设置明确的尺寸请求,结果在Box里被压缩成了0x0的大小,自然就看不到了。

而直接把WebView设为窗口子控件时,GtkWindow会强制让子控件占满整个窗口的可用空间,所以WebView能正常显示。

解决方法超简单,只需要给WebView加上两个关键设置:

  • 开启水平和垂直方向的扩展属性,让它能自动占满Box里的可用空间
  • (可选但推荐)设置一个基础尺寸请求,避免窗口缩得太小时WebView显示异常

修改后的代码如下:

GtkWidget *horizontalBoxWidget = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
GtkBox *horizontalBox = GTK_BOX(horizontalBoxWidget);

GtkWidget *webviewWidget = webkit_web_view_new();
WebKitWebView *webview = WEBKIT_WEB_VIEW(webviewWidget);

// 关键修改:开启水平/垂直扩展,让WebView占满Box可用空间
gtk_widget_set_hexpand(webviewWidget, TRUE);
gtk_widget_set_vexpand(webviewWidget, TRUE);
// 可选:设置基础尺寸,避免窗口过小时WebView显示异常
gtk_widget_set_size_request(webviewWidget, 800, 600);

gtk_box_append(horizontalBox, webviewWidget);
webkit_web_view_load_uri(webview, "https://www.example.com");
gtk_window_set_child(window, horizontalBoxWidget);

等之后你要给Box加其他控件时,只需要给新控件也设置对应的扩展属性和尺寸请求,就能灵活控制布局比例啦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 13:22:59