如何确定默认纸张大小(取决于国家/地区) P>在Qt为基础的C++应用程序中,什么是确定默认纸张大小的好方法?

如何确定默认纸张大小(取决于国家/地区) P>在Qt为基础的C++应用程序中,什么是确定默认纸张大小的好方法?,qt,printing,internationalization,locale,Qt,Printing,Internationalization,Locale,虽然QLocale提供了有关日期格式、测量系统等的信息,但我无法从中检索默认纸张大小 例如,在美国,他们通常使用字母,而在德国,我们通常使用DIN A4 Qt文档建议为此目的使用翻译文件,请参阅。然而,据我所知,翻译文件指定的显示语言应该独立于系统语言环境,以便人们可以选择独立于系统语言环境的显示语言(如果愿意) 有什么想法吗?您是在考虑操作系统已经进行的本地化,还是每个国家的政府为其人民采用的标准纸张尺寸的情况下,尝试获取用户计算机的默认纸张尺寸?我不认为后者真的存在,除非通过非官方的惯例。用

虽然QLocale提供了有关日期格式、测量系统等的信息,但我无法从中检索默认纸张大小

例如,在美国,他们通常使用字母,而在德国,我们通常使用DIN A4

Qt文档建议为此目的使用翻译文件,请参阅。然而,据我所知,翻译文件指定的显示语言应该独立于系统语言环境,以便人们可以选择独立于系统语言环境的显示语言(如果愿意)


有什么想法吗?

您是在考虑操作系统已经进行的本地化,还是每个国家的政府为其人民采用的标准纸张尺寸的情况下,尝试获取用户计算机的默认纸张尺寸?我不认为后者真的存在,除非通过非官方的惯例。用正在开发的国际软件书的话来说:我正在寻找一个特定国家常用的纸张类型。例如,Microsoft Word在德国选择DIN A4作为默认值,而我假设它在美国选择字母作为默认值。对我来说,这听起来像是特定于地区的,就像日期格式一样,但可能它只是硬编码的Word if Germany然后DIN A4?解决了一些问题:在Windows上,默认纸张大小可以通过GetLocalInfo API查询,LCType标志设置为locale_IPAPERSIZE。因此,QLocale类似乎只是缺少该属性。我不确定这是否有效:QPrinter.paperSize返回默认打印机的默认纸张大小。可以查询操作系统或打印机驱动程序以获取本地化的纸张大小。在美国,它返回字母。不知道它在其他国家是否返回不同的纸张大小。我查看了Qt源代码。Win32 QPrinter::paperSize实现从d->devMode->dmPaperSize获取纸张大小,最后可能是本机打印机环境信息,请参阅MSDN:devMode。正如您所说,打印机可能会从操作系统中检索其默认值。听起来不错。谢谢顺便说一句,QPrinter:paperSize在我的操作系统上返回A4。