QT QStackedLayout问题

我想问一下QStackedLayout . 现在,我有几个小部件添加到QStackedLayout并且我想这样做:当用户切换到第X页时,刷新第X页 .

我怎样才能做到这一点?我有一个自定义代码,我想在它刷新时运行非常感谢你

回答(3)

2 years ago

根据您对我的评论,您似乎正在寻找当前页面更改时生成的信号,以便您可以更新屏幕的基础数据 . 在这种情况下,您可能希望将一个插槽挂钩到void QStackedWidget::currentChanged(int index)

2 years ago

所有“页面”都是基于QWidget的类 . 如果您的小部件无法正确绘制,则需要检查小部件的代码 . 通常,在切换页面时,可见小部件会自行重绘 . 如果您的小部件无法处理某些事件,您可以看到故障 .

无论如何,如果你想强制重绘"page",你需要调用QWidget::update()或(暴力方法)QWidget::repaint() .

2 years ago

在我看来,处理这种情况的最好方法是通过继承 . 创建一个派生自 QWidget 的类,该类具有虚拟更新功能 . 将其用作堆叠小部件的每个页面的基类 . 在包含堆叠小部件的类中,将插槽连接到堆叠小部件的currentChanged(int index)信号 . 在该插槽中,获取当前窗口小部件,qobject_cast它到您的基本类型,并且(如果成功)调用它上面的更新功能 .

作为堆叠窗口小部件中的页面的每个类应该覆盖更新功能,并根据需要使用它来更新其信息 .