Как получить системные настройки шрифта по умолчанию в Qt?

Я создаю рабочий стол p с использованием Qt, моя машина разработки — win 7 x64 с японской локалью, стандартный системный шрифт — Meiryo. Большая часть пользовательского интерфейса win 7 находится в этом шрифте, хотя классические / более старые программы, такие как окно настройки шрифта пользовательского интерфейса, используют другой шрифт, который является MS UI Gothic. Меня это не беспокоило, пока я не обнаружил, что QtCreator создает мое приложение с MS UI Gothic в одном месте, а Meiryo — в другом.Например, qlabels, qlineedits, qcombobox используют MS UI Gothic, но пользовательское средство завершения с qtableview, которое я добавлю позже, использует Meiryo.

Я сделал большую часть пользовательского интерфейса в конструкторе QtCreator, а завершающую часть добавил в код. Если я изменю шрифт всех виджетов на Meiryo в The Designer, то, конечно, приложение будет использовать Meiryo, поэтому выглядит правильно, но в этом случае я бы предпочел, чтобы Qt автоматически выбирал любой системный шрифт по умолчанию для меня, потому что win 7 не будет единственным платформе я буду использовать эту программу.

Меня еще больше беспокоит то, что QApplication::font() возвращает MS UI Gothic, что в моем случае неверно. Конечно, я могу установить шрифт для всего приложения, используя QApplication::setFont(), но это противоречит всей цели иметь собственный внешний вид без микроуправления шрифтами.

Итак, мой вопрос:

  1. как Qt определяет системный шрифт по умолчанию и,
  2. если это ошибка Qt, как мне ее обойти?
  3. Как мне использовать файлы .ui, чтобы мой пользовательский интерфейс по-прежнему использовал системный шрифт по умолчанию во время выполнения?

Некоторые уточнения и факты, которые я нашел

  1. Я хочу, чтобы мое приложение использовало системный шрифт по умолчанию для КАЖДОГО текста.

  2. В этом обсужденииговорилось, что Designer добавит информацию о шрифте независимо от того, хотите вы этого или нет. Таким образом, Qt будет учитывать эту информацию, а не системный шрифт по умолчанию. По крайней мере, кто-то упомянул, что удаление этой информации вручную должно заставить Qt выбирать системный шрифт по умолчанию во время выполнения.

  3. На моей машине разработки QApplication::font() возвращает НЕВЕРНЫЙ шрифт по умолчанию.НО почему QTableView, который я добавляю позже в код, использует ПРАВЫЙ шрифт? Откуда у него эта информация?

Так что, если я найду, где QTableView находит эту информацию, я могу получить ее в main и установить для всего приложения с помощью QApplication::setFont(). Тогда остается вручную удалить всю информацию о шрифтах, тогда НАДЕЕМСЯ, что это сработает. Но именно поэтому мы используем Qt в первую очередь, не так ли?

17
задан Evan 15 June 2012 в 04:46
поделиться