如何在Gtk::Button中正确隐藏图片?Gtkmm技术求助
先贴出接手的状态切换代码:
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
相关产品推荐
相关产品推荐

