QT QStackedLayout problem

QT QStackedLayout problem

本文关键字:problem QStackedLayout QT      更新时间:2023-10-16

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

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

所有"pages"都是基于QWidget的类。如果您的小部件不能正确地绘制自己,您需要检查小部件的代码。通常,在切换页面时,可见小部件会重新绘制自己。如果你的小部件不能处理一些事件,你可以看到小故障。

无论如何,如果你想强制重新绘制你的"页面",你需要调用QWidget::update()或(暴力破解方法)QWidget::repaint()

根据您对我的评论,似乎您正在寻找当前页面更改时生成的信号,以便您可以更新屏幕的底层数据。在这种情况下,您需要将一个槽连接到void QStackedWidget::currentChanged(int index)

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

在您的堆叠小部件中作为页面的每个类应该覆盖更新函数,并在必要时使用它来更新其信息。