找人做jsp网站,赵公口网站建设北京网站设计,个人博客网页素材,网站建设方案标书一、需要完成的功能 在子对话框#xff08;CmdChildQt#xff09;中#xff0c;点击 “执行” 按钮#xff0c;将多个命令行指令#xff0c;依次输入到父对话框#xff08;CmdQt#xff09;的编辑框中并且执行#xff0c;要求如下#xff1a; 在前一个命令执行完成后CmdChildQt中点击 “执行” 按钮将多个命令行指令依次输入到父对话框CmdQt的编辑框中并且执行要求如下 在前一个命令执行完成后获取命令行返回结果信息根据结果信息判断进行下一步操作当前一个命令执行成功后继续自动输入下一个命令行指令到父对话框编辑框中执行就这样依次执行多个命令行命令达到命令执行自动化的目的。 二、实现方法
父对话框
class CmdQt : public QDialog
{Q_OBJECTsignals:void cmdFinished(QString qstr);
};void CmdQt::slot_inputCommand()
{}void CmdQt::slot_SetCommandRetInfo(DATA_INFO info)
{emit cmdFinished(qstr);
}void CmdQt::setSignalExecCmdLine()
{emit ui.leditInputCommand-returnPressed();
}
子对话框
class CmdChildQt :public QDialog
{Q_OBJECTprivate:QEventLoop loop;QString m_qstrRecvCmdRetInfo;signals:void signal_sendQuit();private slots:void slot_RecvCmdRetInfo(QString qstrInfo);
};void CmdChildQt::slot_RecvCmdRetInfo(QString qstrInfo)
{m_qstrRecvCmdRetInfo qstrInfo;emit signal_sendQuit();
}void CmdChildQt::slot_exec()
{m_parent-setCmdLine(ui.editCmdSelect-text().trimmed());connect(m_parent, CmdQt::cmdFinished, this, CmdChildQt::slot_RecvCmdRetInfo);connect(this, CmdChildQt::signal_sendQuit, loop, QEventLoop::quit);m_parent-setSignalExecCmdLine();loop.exec();if (m_qstrRecvCmdRetInfo.contains(same string...) false){return;}...m_parent-setCmdLine(command -param);m_parent-setSignalExecCmdLine();loop.exec();if (m_qstrRecvCmdRetInfo.contains(same string...) false){return;}...disconnect(m_parent, CmdQt::cmdFinished, this, CmdChildQt::slot_RecvCmdRetInfo);disconnect(this, CmdChildQt::signal_sendQuit, loop, QEventLoop::quit);...
} 上述代码的主要逻辑 链接信号和槽函数在子对话框中获取命令行并设置父对话框的编辑框为命令行指令向父对话框编辑框发射 returnPressed 信号槽函数 slot_inputCommand 被触发执行之后slot_inputCommand 触发 slot_SetCommandRetInfo 执行在 slot_SetCommandRetInfo 中发射 cmdFinished 信号cmdFinished 信号触发 slot_RecvCmdRetInfo 执行在 slot_RecvCmdRetInfo 中发射 signal_sendQuit 信号signal_sendQuit 触发 QEventLoop::quit 执行loop.exec() 返回并执行之后的代码根据 m_qstrRecvCmdRetInfo 的值进行下一步骤如果命令执行成功继续执行下一个命令。