dbzhang800:加这句对你可能是没问题,但你要明白:加之前,你的程序可以在多个平台(Linux/MacX/其他语言的Windows)下运行了;加之后,只能在简体中文Windows运行。
(2014-12-13 22:15)
明白了。以后就不用这个setCodecFor... 调用了。
实际上,就是QTranslator.load是必要的了,翻译tr()中的字串。
在我的机器上,UTF8和GB18030互相转换多了,好象有问题。我又退回File,不用QFile了。这样,根据一个布尔量,决定是用Local8还是UTF8
QString fileName = QFileDialog::getOpenFileName(this, tr("加载文件"), "",
tr("Script File (*.scs *.txt)"));
if (fileName.size() == 0)
return;
FILE * fp = fopen(fileName.toLocal8Bit().data(), "r");
if (fp == NULL) {
return;
} else {
char buf[1024];
while(fgets(buf, 1023, fp) != NULL) {
QString line;
int len = strlen(buf);
if (buf[len - 1] == '\n')
buf[len - 1] = '\0';
if (local8Flag) {
line = QString::fromLocal8Bit(buf);
} else
line = QString::fromUtf8(buf);
edit->appendPlainText(line);
}
fclose(fp);
}
工作的还可以。谢谢二位!