qt c++ 子窗体全屏展示后 再按快捷键 mainwindow中的qaction不能产生信号 不能还原窗口
时间: 2024-02-05 12:10:36 浏览: 22
可能是因为子窗体全屏展示后,焦点仍然停留在子窗体上,而不是返回到主窗口。因此,需要在子窗体展示全屏前记录当前的焦点窗口,然后在子窗体退出全屏模式时将焦点还原到该窗口。
具体实现方法如下:
1. 在主窗口中记录当前的焦点窗口:
```cpp
QWidget *MainWindow::getCurrentFocusWidget()
{
QWidget *widget = QApplication::focusWidget();
if (!widget || widget == this) {
widget = centralWidget();
}
return widget;
}
```
2. 在子窗体进入全屏模式前,记录当前的焦点窗口:
```cpp
void ChildWindow::enterFullScreen()
{
m_prevFocusWidget = parentWidget()->getCurrentFocusWidget();
// 进入全屏模式
showFullScreen();
}
```
3. 在子窗体退出全屏模式时,将焦点还原到之前的窗口:
```cpp
void ChildWindow::exitFullScreen()
{
// 退出全屏模式
showNormal();
// 将焦点还原到之前的窗口
if (m_prevFocusWidget) {
m_prevFocusWidget->setFocus();
}
}
```
这样做可以确保子窗体退出全屏模式后,焦点会自动还原到之前的窗口,从而保证主窗口中的快捷键能够正常工作。