效果
1、TextEdit中的内容格式是: xxx xxx xxx;
需要翻译的是第三个xxx 要把xxx xxx ;删除
2、我的界面中点击你好是增加一个123内容,点击Word是增加一个456的内容,Cancel是清空textEdit中的内容
代码
QString text = ui->textEdit->toPlainText(); //获取TextEdit中的文本内容,每一行是以\n结尾
ui->textEdit->clear(); //先清空,翻译后再重新写入
if(!text.isEmpty())
{
QStringList mTextList = text.split("\n"); //以\n为切割符
for(int i=0; i<mTextList.size(); i++)
{
// 123 123 456;
QString text2 = mTextList.at(i);
QStringList mTextList2 = text.split(" "); //每一行再以空格为切割符
//123 123 123;
text2.replace(mTextList2.at(0) + " " +mTextList2.at(1) + " ", ""); //将要删除的内容替换为空,也就是删除掉
text2.replace(";", ""); //替换;为空
//这个时候的text2中的文本内容其实就是我们想要翻译的内容
//但是tr()中包裹的要是const char *,所以我们要把QString中的内容转成const char *,其实按照逻辑,这个转换的步骤是可以不要的,因为我们每次都有一个判断,凭个人咯
QByteArray mByteInfo = text2.toLatin1();
const char *mChInfo = mByteInfo.data();
QString Info = text2.toLocal8Bit();
if(text2.toLocal8Bit() == "一二三")
{
ui->textEdit->append(mTextList2.at(0) + " " +mTextList2.at(1) + " " + tr("123") + ";");
}
else if(text2.toLocal8Bit() == "四五六")
{
ui->textEdit->append(mTextList2.at(0) + " " +mTextList2.at(1) + " " + tr("456") + ";");
}
else
{
//放置转换好的内容
ui->textEdit->append(mTextList2.at(0) + " " +mTextList2.at(1) + " " + tr(mChInfo) + ";");
}
}
}
总结
1、提取文本内容
2、切割得到要翻译的内容
3、判断文本内容,往textEdit中写入内容