在 Qt4 中与外部编辑器通信的问题
Posted
技术标签:
【中文标题】在 Qt4 中与外部编辑器通信的问题【英文标题】:Problems communicating with external editor in Qt4 【发布时间】: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 启动,没有初始文本。我可以编辑和保存文档,当我退出时,应用程序会读取初始文本(应该已经被覆盖)。
我很困惑,因为这段代码在一本印刷书中,所以它应该可以工作。我是否为编辑器变量使用了错误的字符串?
【问题讨论】:
【参考方案1】:您的编辑器“/Users/jason/bin/mate”似乎不支持将文件名作为参数传递。
在您的终端上,尝试以下操作:
echo "Test text" > test.txt
/Users/jason/bin/mate test.txt
查看它是否打开带有正确文本的编辑器。
【讨论】:
我发现您必须执行“mate -w”才能等待文件关闭。以上是关于在 Qt4 中与外部编辑器通信的问题的主要内容,如果未能解决你的问题,请参考以下文章
QT4 设计器在信号/槽编辑器中不接受“&”引用和“”空格字符
python 计算在OpenRefine中与维基数据重新调整的术语及其候选者之间的Levensthein编辑距离的方法(https:// gi