6

在 Windows 下使用 QtCreator 设计 UI,并.ui在 MacOSX 下移植相同的文件会导致设计的一些文本部分非常小——实际上是 HTML 部分。这似乎是因为QtCreator 使用pt而不是px作为文本大小单位,并且默认屏幕分辨率在 Windows 和 MacOSX 下完全不同。

我没有得到更一致的结果有什么原因吗?除了编辑每个ptpx,有什么解决方法吗?

谢谢。

4

2 回答 2

3

根据经验,您不应在 Qt Designer/Creator 中手动指定控件的字体大小,因为这会导致您遇到问题。不一致的原因是不同平台使用不同的 DPI 设置(Windows 上为 96 dpi,Mac OS X 上为 72 DPI)。这导致字体以不同的大小显示。

另外,您提到了 HTML。QTextEdit我假设您已经使用内置编辑器在类似的小部件中设置了一些 HTML 文本。当您在那里选择字体大小时,Qt Creator 将生成一些 HTML,如下所示:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hello World</p></body></html>

如您所见,它设置了一些font-size属性,这真的很讨厌。解决此灾难的一个简单易行的解决方案是style=完全删除这些属性。这会导致QTextEdit使用默认的应用程序字体(在所有平台上都应该没问题):

<html><head></head><body><p>Hello World</p></body></html>

作为旁注,这对翻译人员来说更友好,因为他们不必与所有无用的 CSS 作斗争。

不幸的是,Qt 的 QTextEdit 不支持“百分比”字体大小规范(仅支持 px 和 pt)。如果是这样,您可以使用“90%”之类的东西来使文本小于默认字体,同时仍然是安全的。

另一种选择是 QWebView,您可以将其设为可编辑。这允许良好的文本格式,同时拥有完整的 CSS 子集。但这可能是矫枉过正。

希望有帮助!

于 2010-01-09T00:39:54.040 回答
1

您是否必须在.ui文件中设置文本属性?通常,当您设置小部件的文本属性时,UIC 会用它在代码中从头开始创建的东西完全替换该小部件的字体。如果您在 Windows 上编辑它们,则字体将具有与 Windows 相关的名称,这可能会导致 Mac 出现问题。

我通常做的是不要触摸设计器中的字体,以便小部件获得通常看起来不错的默认字体并在小部件的 c'tor 中更改它们,如下所示:

QFont f = ui.someLabel->font(); // get the current (default) font from the widget
f.setBold(true); // change only what's need to be changed
ui.someLabel->setFont(f); 
      // set the new and impreved font back to where it came from

这样,您可以避免弄乱任何特定于平台的东西。如果您的更改实际上是特定于平台的,您可以使用#ifdef Q_OS_WIN32或选择正确的更改#ifdef Q_OS_MAC

于 2010-01-08T21:49:30.703 回答