Gtkmm 3.0:如何在窗口容器中切换不同内容组件?
适合触摸屏切换场景的GTK中间容器推荐
Gtk::Box(垂直/水平布局):这是最通用的基础容器,继承自
Gtk::Widget,可以轻松自定义子类。切换内容时,只需移除当前子组件、添加新组件后调用show_all()即可。它适配固定尺寸场景,性能稳定,适合简单的内容切换需求。Gtk::Stack:这是为内容切换场景量身设计的容器,完全匹配你用左右按钮切换中间内容的需求。你可以直接通过
set_visible_child()方法手动切换子页面,也能关联按钮实现自动切换;还支持淡入淡出、滑动等过渡动画,很适合触摸屏交互。它能直接容纳Gtk::Grid、Gtk::DrawingArea等任意组件,不需要自定义继承,直接创建实例管理多个子页面就行,是这类场景的最优选择。Gtk::Notebook:如果不介意稍显传统的切换逻辑,可以用这个组件。你可以隐藏默认的标签栏,通过左右按钮调用
next_page()/prev_page()方法切换页面。不过它的过渡灵活性不如Gtk::Stack,但也是可行的方案。
另外你提到的Gtk::Fixed不适合的原因:它是绝对定位容器,本身就不推荐用于常规UI布局(尤其是触摸屏这类需要友好交互的场景),而且GTK中部分组件不支持继承,Gtk::Fixed就是其中之一,放弃它是正确的选择。
内容的提问来源于stack exchange,提问作者bejo
相关产品推荐
相关产品推荐

