QT QStackedLayout问题

时间:2011-07-27 01:44:19

标签: c++ user-interface qt4

我想问一下QStackedLayout。 现在,我有几个小部件添加到QStackedLayout 我想做那样的事情: 当用户切换到第X页时,刷新第X页。

我该怎么做? 我有一个自定义代码,我想在它刷新时运行 非常感谢

3 个答案:

答案 0 :(得分:2)

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

无论如何,如果你想对你的“页面”强制重画,你需要调用QWidget::update()或(强力方法)QWidget::repaint()

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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