使用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
相关产品推荐
相关产品推荐

