Неверный размер текста приложения Qt в MacOSX - PullRequest
6 голосов
/ 05 января 2010

Разработка пользовательских интерфейсов с помощью QtCreator под Windows и перенос одного и того же файла .ui под MacOSX приводит к проектам с некоторыми текстовыми частями, очень маленькими - фактически HTML. Кажется, это происходит из-за того, что QtCreator использует pt вместо px в качестве единицы размера текста, и что разрешения экрана по умолчанию весьма различны в Windows и MacOSX.

Есть ли причина, по которой я не пришел к более последовательным результатам? Помимо редактирования каждого pt в px, есть ли обходной путь ?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 января 2010

Как правило, вы не должны указывать размеры шрифта для элементов управления вручную в Qt Designer / Creator, так как это приводит к вашим проблемам. Причиной несоответствия является тот факт, что разные платформы используют разные настройки DPI (96 т / д в Windows против 72 т / д в Mac OS X). В результате шрифты отображаются с разными размерами.

Также вы упомянули HTML. Я предполагаю, что вы установили некоторый HTML-текст в QTextEdit -подобном виджете, используя встроенный редактор. Когда вы выбираете размер шрифта там, 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.

К сожалению, QTextEdit Qt не поддерживает спецификацию размера шрифта в процентах (только px и pt). Если бы это произошло, вы могли бы использовать что-то вроде «90%», чтобы сделать текст меньше шрифта по умолчанию, оставаясь при этом в безопасности.

Другой вариант - это QWebView, который вы можете редактировать. Это учитывает хорошее форматирование текста, имея полное подмножество CSS. Но это может быть излишним.

Надеюсь, это поможет!

1 голос
/ 09 января 2010

Вам нужно установить свойства текста в ваших .ui файлах? Обычно, когда вы устанавливаете свойство text виджета, тогда UIC полностью заменяет шрифт этого виджета чем-то, что он создает с нуля в коде. Если вы редактируете их в Windows, шрифт будет иметь имя, связанное с Windows, что может вызвать проблемы на Mac.

Обычно я не касаюсь шрифтов в конструкторе, чтобы виджеты получали шрифты по умолчанию, которые обычно выглядят нормально, и изменяют их в c'or виджета следующим образом:

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

...