最近工作中为了测试某个模块,需要把原先输入模块部分,改成控制台输入来方便测试。在QT中,我们可以使用 QTextStream 类来读取用户的输入来达到目的。下面是一个简单的例子:
cpp
#include <QCoreApplication>
#include <QTextStream>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
QTextStream cin(stdin);
QString input;
while (true) {
input = cin.readLine();
if (input == "q") {
break;
}
qDebug() << "You entered: " << input;
}
return app.exec();
}
当然,我们也可以把这段代码写到一个线程中来执行,例如:
cpp
void startForTestThread()
{
QThread threadM;
ForTest pForTestM = new ForTest();
pForTestM->moveToThread(&threadM);
threadM.start();
connect(&threadM, SIGNAL(started()), this, SLOT(waitForEnter()));
}
void waitForEnter()
{
// for test
QTextStream cin(stdin);
QString input;
while (true) {
input = cin.readLine();
if (input == "q") {
break;
}
qDebug() << "You entered: " << input;
// do something with "input"
sendSignalSimulate(input.toInt());
}
}
只要在你的程序合适位置调用startForTestThread函数即可。
综上,我们就可以通过输入不同的参数来进行测试了。