一、需要完成的功能
在子对话框槽函数中,发送信号到父对话框,等待父对话框信号对应的槽函数执行完成,再继续执行子对话框槽函数中之后的代码。
二、实现方法
- 父对话框
class CmdQt : public QDialog
{
Q_OBJECT
signals:
void cmdFinished();
}
- 子对话框
void CmdChild::slot_exec()
{
...
QEventLoop loop;
connect(m_parent, &CmdQt::cmdFinished, &loop, &QEventLoop::quit);
m_parent->setSignalExecCmdLine();
loop.exec();
...
}
如上所示:
- 子对话框 CmdChild 发送信号到父对话框 CmdQt;
- CmdQt 执行对应的槽函数,槽函数又引发其他函数的执行,在最后引发的函数中,发出 cmdFinished 信号;
- 子对话框 CmdChild 接收到 cmdFinished 信号,触发 QEventLoop::quit 执行,loop.exec() 返回;
- 继续执行之后的代码;