怎么把QFileDialog里面的英文text改成自己想要的中文?

adq1_2 2012-05-29 05:23:34

就是这些图上我划红线的地方,怎么改成自己想要的中文呢?
...全文
1301 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjt_xfwh 2014-06-04
  • 打赏
  • 举报
回复
1.在Qt安装translations目录下找到qt_zh_CN.qm,拷贝到项目下 并添加到.qrc文件中; 2.在main函数中加入以下内容即可: QApplication a ( argc, argv); ... ... QTranslator t ; t .load ( ":/qm/Resources/qt_zh_CN.qm" ); a .installTranslator (& t); 3.经测试,已转换为中文系统
kingbackzhq 2013-07-10
  • 打赏
  • 举报
回复
引用 21 楼 xiachm 的回复:
[Quote=引用 19 楼 的回复:] 还是感觉本地化的界面好,但是该怎么改里面的那些label的text啊?没办法吗? [/Quote] 没办法,因为它们看起来根本不是Qt的东西。 我觉得楼主有点钻牛角尖了,其实像你说的那个需求我认为意义不大。 “文件名(N): 改成 工程文件(P):”,有多少用户会注意到这个区别?而且我们也完全可以在其它地方加以提示,比如在菜单上把“打开”改成“打开工程”。
这不是牛角尖的问题,比如你在嵌入式Linux上面使用Qt做标准对话框QFileDialog,Qt就会使用自己绘制的对话框,那时你想对话框上的字符显示中文就没那么简单了,不知道你有没有什么好的办法?请多赐教
kingbackzhq 2013-07-10
  • 打赏
  • 举报
回复
楼主,不知道你的问题解决了没?我也想实现你那样的功能,我尝试过修改QFileDialog的locale,不过没效果!Qt自带了标准对话框上字符的中文翻译,感觉应该可以通过简单的设置就可以了! 楼主要有好的方法记得回复我啊~~~
xiachm 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]
还是感觉本地化的界面好,但是该怎么改里面的那些label的text啊?没办法吗?
[/Quote]
没办法,因为它们看起来根本不是Qt的东西。

我觉得楼主有点钻牛角尖了,其实像你说的那个需求我认为意义不大。

“文件名(N): 改成 工程文件(P):”,有多少用户会注意到这个区别?而且我们也完全可以在其它地方加以提示,比如在菜单上把“打开”改成“打开工程”。
windywater119 2012-05-29
  • 打赏
  • 举报
回复
Qt库的translations目录下自带语言包,如qt_zh_CN.ts是简体中文。如果要自定义QFileDialog里的词条,可以先把QFileDialog下的所有词条收集起来,即使用QCoreApplication::translate()把相关词条放在代码中,让语言家工具感知。然后到qt_zh_CN.ts里,把QFileDialog的部分复制到自己的ts里面。然后lupdate,lrelease。这样也可能翻译QLineEdit的右键菜单等,是比较麻烦,好像没有更好的办法。
adq1_2 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

更简单的:
C/C++ code

QFileDialog dialog;
if (QLabel *label = dialog.findChild<QLabel *>("fileNameLabel"))
{
label->setText("hello");
}
dialog.exec();
[/Quote]

还是感觉本地化的界面好,但是该怎么改里面的那些label的text啊?没办法吗?
adq1_2 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

引用 15 楼 的回复:
比如,我想把里面的那个label的text显示的 文件名(N): 改成 工程文件(P):,这种...

败给你了,好吧,教你一招:
C/C++ code

QFileDialog dialog;
foreach (QObject *obj, dialog.children())
{
if (obj->objectNam……
[/Quote]

谢谢!但是你这种又不是本地的了啊,你刚才告诉我的“不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。”,那我用这种本地化界面的方法又该怎么改里面的那些label的text啊?
xiachm 2012-05-29
  • 打赏
  • 举报
回复
更简单的:

QFileDialog dialog;
if (QLabel *label = dialog.findChild<QLabel *>("fileNameLabel"))
{
label->setText("hello");
}
dialog.exec();
xiachm 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
比如,我想把里面的那个label的text显示的 文件名(N): 改成 工程文件(P):,这种...
[/Quote]
败给你了,好吧,教你一招:

QFileDialog dialog;
foreach (QObject *obj, dialog.children())
{
if (obj->objectName() == "fileNameLabel")
{
QLabel *label = qobject_cast<QLabel *>(obj);
label->setText("hello");
}
}
adq1_2 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

我有点晕了,既然已经变成系统本地设置的语言了,那你还要改什么?

楼主到底想做个什么对话框?QFileDialog的那几个静态方法还不能满足你的要求吗?
[/Quote]

比如,我想把里面的那个label的text显示的 文件名(N): 改成 工程文件(P):,这种...
xiachm 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 9 楼 的回复:

引用 8 楼 的回复:
引用 7 楼 的回复:

引用 5 楼 的回复:

引用 4 楼 的回复:

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将……
[/Quote]
“text的内容”是什么意思?
xiachm 2012-05-29
  • 打赏
  • 举报
回复
我有点晕了,既然已经变成系统本地设置的语言了,那你还要改什么?

楼主到底想做个什么对话框?QFileDialog的那几个静态方法还不能满足你的要求吗?
adq1_2 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:
引用 7 楼 的回复:

引用 5 楼 的回复:

引用 4 楼 的回复:

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。

不想使……
[/Quote]

但是我想改text的内容还是不知道怎么改啊?没办法?只有自己继承QDialog写个FileDlg用?
adq1_2 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:

引用 5 楼 的回复:

引用 4 楼 的回复:

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。

不想使用本地的你,那就自己写……
[/Quote]

图错了,是这样的:

adq1_2 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:

引用 5 楼 的回复:

引用 4 楼 的回复:

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。

不想使用本地的你,那就自己写……
[/Quote]



谢谢!变是变成系统本地设置的语言的了,但是我想改还是不知道怎么改啊?没办法?只有自己继承QDialog写个FileDlg用?
xiebin133 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 7 楼 的回复:

引用 5 楼 的回复:

引用 4 楼 的回复:

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。

不想使用本地的你,那就自己写个Fil……
[/Quote]
+1
xiachm 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 5 楼 的回复:

引用 4 楼 的回复:

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。

不想使用本地的你,那就自己写个FileDlg 来使用。。
……
[/Quote]
你调用一下这句话试试:

QFileDialog::getOpenFileName();
adq1_2 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。

不想使用本地的你,那就自己写个FileDlg 来使用。。
[/Quote]

除了自己继承QDialog写个FileDlg用之外,没有别的办法了吗?QFileDialog不提供操纵我划红线的地方的方法?
adq1_2 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。
[/Quote]
?什么意思?你说的这些貌似都不是操纵我划红线的地方的方法啊?
shen_wei 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

不要直接使用QFileDialog,应该调用它的Static Public Members,如:getExistingDirectory, getOpenFileName, getOpenFileNames, getSaveFileName,它们将弹出本地化的界面。
[/Quote]
不想使用本地的你,那就自己写个FileDlg 来使用。。
加载更多回复(4)

21,440

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧