我想使用QProcess
从GUI启动mysql。我尝试了以下内容:
QStringList arguments;
arguments << QString("-u%1").arg("myaccount")<< QString("-p%2").arg("password");
QProcess *mysql = new QProcess;
mysql->setReadChannelMode(QProcess::ForwardedChannels);
mysql->execute("mysql", arguments);
if(mysql->waitForReadyRead(-1))
qDebug(mysql->readAllStandardOutput());
但是,Qt文档中提到的问题很严重,它会冻结。
我怎么解决这个问题?许多人建议使用QThread
,但我不知道该怎么做?
先谢谢!
答案 0 :(得分:1)
问题是您调用QProcess::execute()
函数并等待该过程完成。如果您需要避免冻结,可以使用readyReadStandardOutput()
信号并执行以下操作:
[..]
connect(mysql, SIGNAL(readyReadStandardOutput()), this, SLOT(readOutput()));
mysql->start("mysql", arguments);
if (!mysql->waitForStarted()) {
// report error
}
答案 1 :(得分:0)
此链接可以帮助您: QProcess fails to execute external executable
调用MySQL: c:\ mysql \ mysql.exe -u MYUSERNAME -pMYPassword
-p和密码之间没有空格。 设置MySQL路径。