EgoRusMarch
@EgoRusMarch
C++ Developer

Qt. Что такое point в контексте QFont?

Вроде как рекомендуется использовать размер в поинтах, а не в пикселях. Понятно, что размер поинта должен быть зависим от физического размера экрана. Но что это такое? 1мм? 1/10 дюйма? Нигде не нашёл.

Также, на сколько понимаю, по умолчанию Qt ставит системные шрифты. И я хотел получить размер системного шрифта через my_font.pixelSize() для того, чтобы задать высоту QLabel (которая как ни странно в пикселях), но не могу, потому что возвращает -1 из-за того, что по умолчанию поинты. Можно как-то решить эту проблему?
  • Вопрос задан
  • 349 просмотров
Решения вопроса 1
EgoRusMarch
@EgoRusMarch Автор вопроса
C++ Developer
Одна точка (pt) равна 1/72 дюйма. DPI - dots per inch (в данном случае dots == pixels).

double dpi = QGuiApplication::primaryScreen()->physicalDotsPerInch();

auto pt_to_px = [dpi](double pt) -> double { return pt / 72 * dpi; };
auto px_to_pt = [dpi](double px) -> double { return px * 72 / dpi; };

std::clog << "12 pt is " << pt_to_px(12) << " px" << std::endl;
std::clog << "26 px is " << px_to_pt(26) << " pt" << std::endl;

QFont system_font;
std::clog << "system font size in pt: "
          << system_font.pointSize()
          << "\nsystem font size in px: "
          << pt_to_px(system_font.pointSize()) << std::endl;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы