【发布时间】:2009-10-18 06:53:22
【问题描述】:
我正在 Mac OS X 上编写命令行 Qt4 脚本(使用 QCoreApplication)。
我正在使用这段代码改编自 C++ Programming with Qt 4, 2nd ed。页。 313:
QTemporaryFile outFile;
if (!outFile.open())
return;
QString fileName = outFile.fileName();
QTextStream out(&outFile);
out << initial_text;
outFile.close();
QProcess::execute(editor, QStringList() << fileName);
QFile inFile(fileName);
if (!inFile.open(QIODevice::ReadOnly))
return;
QTextStream in(&inFile);
QString text = in.readAll();
std::cout << text.toStdString() << std::endl;
当编辑器设置为“/usr/bin/vim”运行上述代码时,会打印“Vim: Warning: Input is not from terminal”,然后 vim 启动 初始文本 (字符串 initial_text);但是,我无法编辑或退出,因为按转义键会在光标位置打印一个蓝色 ^[,类似于其他所有键。
当编辑器改为“/Users/jason/bin/mate”(TextMate 命令行实用程序)时,TextMate 启动,没有初始文本。我可以编辑和保存文档,当我退出时,应用程序会读取初始文本(应该已经被覆盖)。
我很困惑,因为这段代码在一本印刷书中,所以它应该可以工作。我是否为编辑器变量使用了错误的字符串?
【问题讨论】: