QT程序中文显示的其他方法
2013-01-22 22:12
489 查看
接上篇博文中介绍的中文显示问题,又在网上搜索了另外的一种设计,并且该设计能够解决比较常用的问题,介绍如下:
开始的时候,在网上找到了如下代码,加入到main.cpp文件中之后,所有的子对话框窗口都能显示中文,但是主窗口不能显示中文:
#include <QTextCodec>
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForCStrings (QTextCodec::codecForLocale( ));
接着在网上继续查找资料,找到了如下代码,并替代了上述的代码,编译之后所有的窗口都能显示中文了;
#include <QTextCodec>
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName(“GB2312” ));
QTextCodec::setCodecForLocale (QTextCodec::codecForName( “GB2312”));
故对界面开发之“中文显示”进行了小结,但是,过了一天,进行新的编译之后且编译没有通过,出现了如下错误,之后所有的子对话框窗口就都显示为乱码了,但主对话框还是能够显示为中文:
“make: 警告:检测到时钟错误,您的创建可能是不完整的。”
于是在网上继续进行资料查询,并且进行了多次的代码组合,但出现了不同的问题,如:
使用如下代码时,主界面标题及菜单栏可显示为中文,但子对话框的标题、标签及按钮上的中文显示为乱码:
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
或
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForCStrings (QTextCodec::codecForLocale( ));
但使用如下代码时,子对话框的标题、标签及按钮上可显示中文,而主界面窗口的标题及菜单栏中文显示为乱码:
#include <QTextCodec>
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForCStrings (QTextCodec::codecForLocale( ));
后来发现,主窗口显示中文的时候,也就是 mainwindow.cpp文件内的中文都可以显示,而其它的*.cpp文件都是乱码;于是,尝试了一下,将Control对话框窗口的Control_Standarddialogs.cpp文件内的代码内容拷贝到mainwindow.cpp文件中,然后撤掉Control_Standarddialogs.cpp重新编译,则Control对话框可以显示中文,而其他的对话框还是乱码。
经过不断的尝试和修改,后来在网上有人回帖说只使用如下一句语句就可以,但是必须在所有中文之前,然后我就将其他语句屏蔽到;但是还是不行;
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
后来发现只要先点击压力对话框,然后再点击其他对话框的话,就都能够显示中文。查看p_StandardDialogs.cpp文件代码,发现原来尝试的过程中所遗留下来的两句代码发挥了作用,将其它对话框的*.cpp文件中也加入这两句代码,编译之后都可以显示了。但是在点击“关于”菜单的时候又出现了一点问题,就是:当先点击“关于”菜单项时,跳出的消息对话框可以显示为中文,但在你点击完其它对话框之后再点击“关于”菜单项,跳出的消息对话框就显示为乱码,故在“关于”菜单项的槽函数中加入了如下代码,就没有这种现象了。
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
总结上述现象,得出下列结论:
代码“QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));”在主窗口中起作用,而代码“QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForTrCStrings(QTextCodec::codecForLocale( ));”
对子对话框窗口起作用,并且每次点击窗口的时候都要响应一下上述函数,故上述三句代码要在每个窗口所有中文内容之前发挥作用。
则:在main.cpp文件中加入如下代码:
#include <QTextCodec>
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
在消息对话框文件的槽函数中加入:
Void MainWindow::slotAbout( )
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QMessageBox::about(this, tr(“帮助文档”), tr(“消息对话框显示内容”));
return;
}
在各子对话框的*.cpp文件中加入如下代码:
p_StandardDialogs::p_StandardDialogs( QWidget *parent, Qt::WindowFlags f)
:QDialog(parent, f)
{
QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForTrCStrings(QTextCodec::codecForLocale( ));
setWindowTitle(tr(“中文字样”));
……
}
开始的时候,在网上找到了如下代码,加入到main.cpp文件中之后,所有的子对话框窗口都能显示中文,但是主窗口不能显示中文:
#include <QTextCodec>
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForCStrings (QTextCodec::codecForLocale( ));
接着在网上继续查找资料,找到了如下代码,并替代了上述的代码,编译之后所有的窗口都能显示中文了;
#include <QTextCodec>
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName(“GB2312” ));
QTextCodec::setCodecForLocale (QTextCodec::codecForName( “GB2312”));
故对界面开发之“中文显示”进行了小结,但是,过了一天,进行新的编译之后且编译没有通过,出现了如下错误,之后所有的子对话框窗口就都显示为乱码了,但主对话框还是能够显示为中文:
“make: 警告:检测到时钟错误,您的创建可能是不完整的。”
于是在网上继续进行资料查询,并且进行了多次的代码组合,但出现了不同的问题,如:
使用如下代码时,主界面标题及菜单栏可显示为中文,但子对话框的标题、标签及按钮上的中文显示为乱码:
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
或
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForCStrings (QTextCodec::codecForLocale( ));
但使用如下代码时,子对话框的标题、标签及按钮上可显示中文,而主界面窗口的标题及菜单栏中文显示为乱码:
#include <QTextCodec>
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForCStrings (QTextCodec::codecForLocale( ));
后来发现,主窗口显示中文的时候,也就是 mainwindow.cpp文件内的中文都可以显示,而其它的*.cpp文件都是乱码;于是,尝试了一下,将Control对话框窗口的Control_Standarddialogs.cpp文件内的代码内容拷贝到mainwindow.cpp文件中,然后撤掉Control_Standarddialogs.cpp重新编译,则Control对话框可以显示中文,而其他的对话框还是乱码。
经过不断的尝试和修改,后来在网上有人回帖说只使用如下一句语句就可以,但是必须在所有中文之前,然后我就将其他语句屏蔽到;但是还是不行;
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
后来发现只要先点击压力对话框,然后再点击其他对话框的话,就都能够显示中文。查看p_StandardDialogs.cpp文件代码,发现原来尝试的过程中所遗留下来的两句代码发挥了作用,将其它对话框的*.cpp文件中也加入这两句代码,编译之后都可以显示了。但是在点击“关于”菜单的时候又出现了一点问题,就是:当先点击“关于”菜单项时,跳出的消息对话框可以显示为中文,但在你点击完其它对话框之后再点击“关于”菜单项,跳出的消息对话框就显示为乱码,故在“关于”菜单项的槽函数中加入了如下代码,就没有这种现象了。
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
总结上述现象,得出下列结论:
代码“QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));”在主窗口中起作用,而代码“QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForTrCStrings(QTextCodec::codecForLocale( ));”
对子对话框窗口起作用,并且每次点击窗口的时候都要响应一下上述函数,故上述三句代码要在每个窗口所有中文内容之前发挥作用。
则:在main.cpp文件中加入如下代码:
#include <QTextCodec>
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
在消息对话框文件的槽函数中加入:
Void MainWindow::slotAbout( )
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QMessageBox::about(this, tr(“帮助文档”), tr(“消息对话框显示内容”));
return;
}
在各子对话框的*.cpp文件中加入如下代码:
p_StandardDialogs::p_StandardDialogs( QWidget *parent, Qt::WindowFlags f)
:QDialog(parent, f)
{
QTextCodec::setCodecForTr(QTextCodec::codecForLocale( ));
QTextCodec::setCodecForTrCStrings(QTextCodec::codecForLocale( ));
setWindowTitle(tr(“中文字样”));
……
}
相关文章推荐
- qt编写的android程序在android系统中运行,中文显示乱码的解决方法
- Qt For Symbian 程序标题显示中文的方法
- qt/e在arm板上显示中文的方法
- Qt显示中文的 方法
- 编译好的QT程序在其他没有安装QT的机器上会出现图标和图片无法正常显示的问题。
- QT学习之路————QT程序在开发板上显示 中文字体
- 【Qt开发】Qt5.7中文显示乱码解决方法两种
- 解决JSP开发中Web程序显示中文三种方法
- Qt4.8.4运行程序显示中文
- qt5.6 中文字体显示乱码问题解决方法
- qt 程序发布以及中文翻译的方法
- QT学习——qt creator修改程序编码(解决中文乱码问题)的方法
- Qt5.2显示中文方法!!!
- QT5中文显示乱码解决方法
- ubuntu12.04下QT编译无法显示中文的解决方法
- 在QT中,通过QMessageBox类或者其他显示中文
- Qt程序在ARM板上无法显示JPG格式图片的解决方法
- 该页无法显示 您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序。 解决方法
- Android Studio程序在真机上运行中文显示乱码的解决方法
- 移植的的QT程序不能显示中文问题