Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检测QStackedWidget中的小部件更改_C++_Qt - Fatal编程技术网

C++ 检测QStackedWidget中的小部件更改

C++ 检测QStackedWidget中的小部件更改,c++,qt,C++,Qt,我有一个GUI,它被放在一个屏幕上,屏幕上有映射到功能键的硬件按钮。当按下顶行键时,屏幕将切换到不同的数据视图,侧按钮映射到当前显示的视图中,并在屏幕上显示相应的信息(按钮或标签) 我有一个包含这些按钮的顶级小部件和一个内部有不同数据视图(小部件)的堆叠小部件。我可以从QMainWindow在堆叠的小部件中导航,但我无法确定小部件如何知道它不再具有焦点,因此我可以暂停对数据的更新,鉴于其中一个视图是视频数据,我不希望它在后台不断更新。在这里,main窗口仅仅断开所有信号,更改小部件,然后建立新的

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

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


我尝试在堆叠小部件的子部件中覆盖
focusInEvent(QFocusEvent*e)
,但它从未被调用。

您的
QStackedWidget
有一个信号
currentChanged(int index)
,每当
QStackedLayout
上当前显示的小部件发生变化时,就会触发该信号,您不能使用此信号切换显示视频的小部件上的标志,使其不呈现视频吗

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

我是不是遗漏了什么