我正在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:警告:输入不是来自终端”,然后vim使用初始文本启动(字符串initial_text);但是,我无法编辑或退出,因为按下转义会在光标位置打印蓝色^ [类似于其他所有键。
当编辑器设置为“/ Users / jason / bin / mate”(TextMate命令行实用程序)时,TextMate启动,不带初始文本。我可以编辑和保存文档,当我退出时,应用程序会读入初始文本(应该被覆盖)。
我很困惑,因为这段代码在印刷书中,所以它应该有效。我是否使用错误的字符串作为编辑变量?
答案 0 :(得分:0)
您的编辑器“/ Users / jason / bin / mate”似乎不支持将文件名作为参数传递。
在终端上尝试以下内容:
echo "Test text" > test.txt
/Users/jason/bin/mate test.txt
查看它是否以正确的文字打开编辑器。