在Qt4中与外部编辑器通信时出现问题

时间:2009-10-18 06:53:22

标签: c++ qt macos qt4

我正在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启动,不带初始文本。我可以编辑和保存文档,当我退出时,应用程序会读入初始文本(应该被覆盖)。

我很困惑,因为这段代码在印刷书中,所以它应该有效。我是否使用错误的字符串作为编辑变量?

1 个答案:

答案 0 :(得分:0)

您的编辑器“/ Users / jason / bin / mate”似乎不支持将文件名作为参数传递。

在终端上尝试以下内容:

echo "Test text" > test.txt  
/Users/jason/bin/mate test.txt

查看它是否以正确的文字打开编辑器。