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

如何在Gtk::Button中正确隐藏图片?Gtkmm技术求助

解决Gtk::Button无法隐藏图片的问题

先贴出接手的状态切换代码:

if (ok){
    m_Test_Button.set_image(m_Image_OK);
    m_Test_Button.set_image_position(Gtk::POS_RIGHT);
    m_Test_Button.set_always_show_image(true);
}else{
    m_Test_Button.set_image(m_Image_not_OK);
    m_Test_Button.set_image_position(Gtk::POS_RIGHT);
    m_Test_Button.set_always_show_image(true);
}

原开发尝试用m_Test_Button.set_always_show_image(false)隐藏图片,但完全无效;换成空白图片替代又存在对齐问题,属于临时拼凑的方案。

正确的隐藏方法

首先明确:set_always_show_image()的作用是当按钮包含文本时,强制图片始终显示,它根本不是用来隐藏图片的API,这就是原方法无效的核心原因。

要隐藏按钮上的图片,有两种靠谱的实现方式:

  • 直接移除按钮关联的图片控件,调用set_image(nullptr)即可,执行后按钮上的图片会被移除:
    m_Test_Button.set_image(nullptr);
    
  • 如果后续需要复用原有图片控件(比如切换回OK状态时重新显示m_Image_OK),可以直接调用图片控件的hide()方法:
    // 示例:隐藏当前显示的m_Image_not_OK
    m_Image_not_OK.hide();
    
    之后需要重新显示时,调用对应图片控件的show()方法即可。

关于文档的坑

之前查阅文档未找到有效方法,是因为查看了与当前使用的Gtkmm版本不匹配的文档。不同版本的Gtkmm API细节可能存在差异,一定要确保查阅的文档版本和实际使用版本一致。

内容的提问来源于stack exchange,提问作者Pedro Gimeno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:52:46