qt c++ 子窗体全屏展示后 再按快捷键 mainwindow中的qaction不能产生信号 导致按快捷键全屏的子窗口不能还原
时间: 2024-02-05 17:10:38 浏览: 135
qt--主窗口中按钮弹出子窗口,并把主窗口信号发送给子窗口
5星 · 资源好评率100%
这个问题可能是因为子窗体全屏展示后,它会将焦点设置为自己,导致快捷键信号无法传递到主窗口。
解决方法可以尝试在子窗体中重写`keyPressEvent`函数,将快捷键的事件传递给主窗口。具体实现如下:
```c++
// 子窗体的 keyPressEvent 函数
void SubWindow::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Escape) {
// 按下 ESC 键时,发送还原信号给主窗口
emit restoreSignal();
event->accept(); // 接受该事件,不再传递
} else {
// 其他键位的事件继续传递
QWidget::keyPressEvent(event);
}
}
```
然后在主窗口中,连接该子窗体的还原信号,执行还原操作即可:
```c++
// 在主窗口中连接子窗体的还原信号
connect(m_subWindow, &SubWindow::restoreSignal, this, &MainWindow::restoreSubWindow);
// 主窗口中还原子窗体的槽函数
void MainWindow::restoreSubWindow()
{
m_subWindow->showNormal(); // 还原子窗体
}
```
这样,当子窗体全屏展示后,按下 ESC 键即可触发还原操作。
阅读全文