检测QStackedWidget中的小部件更改

时间:2017-08-23 08:07:51

标签: c++ qt

我有一个GUI,它将放在一个屏幕上,该屏幕上有硬件按钮,映射到功能键上。当按下顶行键时,想法是屏幕将变为不同的数据视图,侧面按钮映射到当前显示的视图,并在屏幕上显示相应的信息(按钮或标签)。

我有一个包含这些按钮的顶级窗口小部件和一个内部具有不同数据视图(窗口小部件)的堆叠窗口小部件。我可以在QMainWindow的堆叠小部件中导航,但我无法弄清楚小部件如何知道它不再具有焦点,因此我可以暂停对数据的更新,并且鉴于其中一个视图是视频数据我不知道希望它在后台不断更新。这里MainWindow断开所有信号,更改小部件然后建立新连接还是有更好的Qt方法,这是否合理?我不一定想要这样的紧耦合,因为视图本身知道应该在按钮上显示什么,而不是主窗口。

我尝试在堆叠小部件的子代中覆盖focusInEvent(QFocusEvent* e),但它永远不会被调用。

1 个答案:

答案 0 :(得分:1)

您的ScalarCustomType(const T& x) : { ... } 信号为ScalarCustmType<double,3,3> A(0) // not A{0} !!! ,每当QStackedWidget上当前显示的小部件发生变化时,都会触发此信号,您​​无法使用此信号在小部件上切换标记显示视频以不渲染它?

当currentWidget是视频小部件时,你可以恢复提供给它的数据(imaghe)的渲染,否则你可以简单地丢弃给它的数据并通过不渲染来节省CPU周期?

我在这里错过了什么吗?