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