我想问一下QStackedLayout。 现在,我有几个小部件添加到QStackedLayout 我想做那样的事情: 当用户切换到第X页时,刷新第X页。
我该怎么做? 我有一个自定义代码,我想在它刷新时运行 非常感谢
答案 0 :(得分:2)
所有“页面”都是基于QWidget的类。如果您的小部件无法正确绘制,则需要检查小部件的代码。通常,在切换页面时,可见小部件会自行重绘。如果您的小部件无法处理某些事件,您可以看到故障。
无论如何,如果你想对你的“页面”强制重画,你需要调用QWidget::update()
或(强力方法)QWidget::repaint()
。
答案 1 :(得分:1)
根据您对我的评论,您似乎正在寻找当前页面更改时生成的信号,以便您可以更新屏幕的基础数据。在这种情况下,您可能希望将一个插槽挂钩到void QStackedWidget::currentChanged(int index)
答案 2 :(得分:1)
在我看来,处理这种情况的最好方法是通过继承。创建一个派生自具有虚拟更新功能的QWidget
的类。将其用作堆叠小部件的每个页面的基类。在包含堆叠小部件的类中,将插槽连接到堆叠小部件的currentChanged(int index)
信号。在该插槽中,获取当前窗口小部件qobject_cast
到您的基本类型,并且(如果成功)调用它上面的更新函数。
作为堆叠窗口小部件中的页面的每个类应该覆盖更新功能,并根据需要使用它来更新其信息。