C语言中使用GTK4 CSS设置按钮文本下划线无效问题求解
GTK4按钮CSS下划线不生效的原因与解决方法
直接给button元素设置text-decoration不会生效,核心原因是:GTK4的按钮文本由内部的GtkLabel子部件负责渲染,你的CSS规则仅作用于按钮容器本身,并未覆盖到实际显示文本的标签组件。而color属性能生效,是因为该属性会被子部件继承,所以标签能继承到按钮的颜色设置。
解决方法
方法1:修改CSS选择器,定位按钮内部的Label
调整CSS规则,通过后代选择器直接选中按钮内的label元素,这样样式就能作用到文本上:
gtk_css_provider_load_from_data(prvdr, "button#btn1 label { text-decoration: underline white;}", -1);
方法2:直接操作按钮内部的Label部件
手动获取按钮的子标签,单独为其设置样式上下文:
// 创建按钮后,获取内部的Label部件 GtkWidget *btn_label = gtk_button_get_child(GTK_BUTTON(btn1)); gtk_widget_set_name(btn_label, "btn1-label"); // 为Label创建并应用CSS样式 GtkCssProvider *prvdr = gtk_css_provider_new(); GtkStyleContext *label_ctx = gtk_widget_get_style_context(btn_label); gtk_css_provider_load_from_data(prvdr, "#btn1-label { text-decoration: underline white; }", -1); gtk_style_context_add_provider(label_ctx, GTK_STYLE_PROVIDER(prvdr), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
两种方法都能让按钮文本正常显示下划线,你可以根据自己的代码习惯选择。
内容的提问来源于stack exchange,提问作者jediapingveno
相关产品推荐
相关产品推荐

