资源描述:
《qt学习之路(33) 国际化(上)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/2446892D绘图部分基本告一段落,还在想下面的部分要写什么,本来计划先说下view-model的相关问题,但是前面看到有朋友问关于国际化的问题,所以现在先来说说Qt的国际化吧! Qt中的国际化的方法有很多,常用的有使用QTextCodec类和使用tr()函数。前者将编码名称写到代码里面,除非你使用Unicode编码,否则国际化依然是一个问题;后者
2、就不会有这个问题,并且这也是Qt推荐的做法。因此,我们主要来说使用tr()函数的方法进行应用程序的国际化。 我们先来看一个很简单的MainWindow。为了清楚起见,这里只给出了cpp文件的内容: #include"mainwindow.h"MainWindow::MainWindow(QWidget*parent) :QMainWindow(parent){ QMenuBar*menuBar=newQMenuBar(this); QMenu*fileMenu=newQMenu(
3、tr("&File"),menuBar); QAction*newFile=newQAction(tr("&New..."),fileMenu); fileMenu->addAction(newFile); QAction*openFile=newQAction(tr("&Open..."),fileMenu); fileMenu->addAction(openFile); menuBar->addMenu(fileMenu); setM
4、enuBar(menuBar); connect(openFile,SIGNAL(triggered()),this,SLOT(fileOpen()));}MainWindow::~MainWindow(){}locatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhejiang,1ofwhichliquorwinemasters(WuzhensaidinformationisCarpenter),
5、whogotAfewbayonets,duetomissedfatal,whennightcamevoidMainWindow::fileOpen(){ QFileDialog*fileDialog=newQFileDialog(this); fileDialog->setWindowTitle(tr("OpenFile")); fileDialog->setDirectory("."); if(fileDialog->exec()==QDialog::Accept
6、ed){ QStringpath=fileDialog->selectedFiles()[0]; QMessageBox::information(NULL,tr("Path"),tr("Youselected%1").arg(path)); }else{ QMessageBox::information(NULL,tr("Path"),tr("Youdidn'tselectanyfiles."));
7、 }} 这是一个很简单的类,运行结果想必大家也都非常清楚:就是一个主窗口,上面有一个菜单栏,一个File菜单,里面有两个菜单项: locatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhejiang,1ofwhichliquorwinemasters(WuzhensaidinformationisCarpenter),whogotAfewbayonets,duetomissedfatal,whennightca
8、me 之所以把运行图贴出来,是为了大家能够看清,在代码中的&符号实际在界面中显示成为一条下划线,标记出这个菜单或者菜单项的快捷键。按照代码,当我们点击了Open时,会弹出一个打开文件的对话框: locatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheas