2012-06-13 3 views
16

, 내 dev에 기계가 일본어 로케일 7 64 승리이며, 표준 시스템 글꼴 Meiryo입니다. UI UI Gothic 인 다른 글꼴을 사용하는 UI 사용자 정의 창과 같은 고전/구형 프로그램에도 불구하고 win 7 UI의 대부분은이 글꼴에 있습니다. QtCreator가 한 곳에서 MS UI Gothic으로, 다른 곳에서 Meiryo로 내 앱을 빌드한다는 것을 알기 전까지는이 사실을 알지 못합니다. 예를 들어 qlabels, qlineedits, qcombobox는 모두 MS UI Gothic을 사용하지만 qtableview가있는 사용자 지정 완성자는 나중에 Meiryo를 사용합니다. Qt에서 시스템 기본 글꼴 설정은 어떻게 얻습니까? 내가 Qt는을 사용하여 데스크톱 응용 프로그램을 구축하고

나는 QtCreator의 디자이너에서 UI의 대부분을 제작하고 completer 나는 코드를 추가했다. 디자이너에서 Meiryo로 모든 위젯의 글꼴을 변경하면 응용 프로그램에서 Meiryo를 사용하게됩니다. 그러나이 경우에는 Qt가 자동으로 시스템의 기본 글꼴을 자동으로 선택하기 때문에 이기기 때문에 7이 유일하지 않습니다. 플랫폼이 프로그램을 사용하겠습니다. 내 우려를 제기 무엇

더욱의 QApplication :: 글꼴() 내 경우에는 거짓 MS UI 고딕 양식을 반환한다는 것입니다. 물론 QApplication :: setFont()를 사용하여 앱 전체 글꼴을 설정할 수는 있지만 글꼴을 마이크로 매니지먼트하지 않고도 기본 look-n-feel을 갖는 모든 목적을 이길 수 있습니다. 이것이 내가 주위지고 가야합니까 어떻게 Qt는 버그 인 경우

그래서 제 질문은,

  1. 어떻게 Qt는 시스템 기본 글꼴을 결정합니까,
  2. 입니까?
  3. .ui 파일을 어떻게 사용해야하며 내 UI에서 런타임시 기본 시스템 글꼴을 사용해야합니까?

일부 해명과 사실 나는 내 응용 프로그램은 모든 텍스트를 시스템 기본 글꼴을 사용하려는

  1. 을 발견했다.

  2. This discussion

    는 디자이너가 원하는 아닌지 여부에 관계없이 글꼴 정보를 추가 할 것이라고 말했다. Qt는 시스템 기본 폰트보다는이 정보를 존중할 것입니다. 적어도이 정보를 수동으로 제거한다고 언급 한 사람은 런타임에 Qt가 시스템 기본 글꼴을 선택하도록해야합니다. 내 dev에 기계의 QApplication :: 글꼴에서

  3. ()는 잘못된 기본 글꼴을 반환합니다. 하지만 QTableView는 나중에 코드에서 오른쪽 글꼴을 사용하여 추가하는 방법은 무엇입니까? 이 정보는 어디서 얻었습니까? 나는 QTableView이 정보를 찾는 위치를 찾을 그래서 경우

, 나는()는 메인에 얻고,의 QApplication :: setFont를 함께 응용 폭을 설정할 수 있습니다. 그런 다음 남은 것은 수동으로 모든 글꼴 정보를 제거한 다음 잘하면 효과가 있습니다. 그러나 이것이 우리가 Qt를 처음 사용하는 이유와 같습니다. 나는 두 가지 솔루션의

+0

PS Qt는 데모 프로그램뿐만 아니라 이러한 증상을 보였다 같은 qApp->setFont(QApplication::font("QMenu"))으로 올바른 글꼴 (귀하의 경우 Meryo)를 얻을 수 QFont QApplication::font (const char * className)를 사용하고, 내가 진 QtSDK를 사용하지 않는, 나는 각각 Qt는 나 자신을 컴파일 x86 및 x64를 사용하고 QtCreator (바이너리 분산 버전)에서 둘 모두를 사용하십시오. 내 toolchain은 msvc2010 표현입니다. – Evan

+0

아무도 모를 것 같아요 – Evan

+0

달리 지정하지 않는 한 Qt는 기본 시스템 글꼴을 사용하여 텍스트를 렌더링합니다. [이 게시물] (http://qt-project.org/faq/answer/how_does_qt_pick_a_font_for_the_application)에서는 다른 운영 체제에서 기본적으로 사용되는 글꼴에 대해 간략하게 설명합니다. 아마도 OS마다 기본 시스템 글꼴을 원한다면 혼란 스러울 것입니다. 아무 것도하지 않으면 그 글꼴을 얻을 수 있습니다 ... 글꼴이 무엇인지 알 필요가 있다면 [시도해보십시오.] (http://lists.trolltech.com/qt-interest/2002-10/thread00280-0.html). –

답변

9

을 생각할 수 있습니다 :

  1. 당신은 당신의 응용 프로그램과 리소스 파일로 글꼴, 모든 플랫폼에 관계없이 현재의 시스템 기본 글꼴을 해당 글꼴을 사용합니다 이런 식으로 포장 할 수있다.

  2. QFont 클래스는 defaultFamily()라는 메소드가 있습니다. 이것을 사용하여 전체 QApplication의 기본 글꼴을 수동으로 설정할 수 있습니다.

예 (main 메소드) :

QApplication application(argc, argv); 
QFont font; 
font.setFamily(font.defaultFamily()); 
application.setFont(font); 
...rest of your code... 
+0

Mac의 defaultFamily()는 시스템 자체에서 지정하는 것이 아니라 하드 코딩 된 이름 만 반환합니다. –

1

Qt는이 QMenu에 대한 QMessageBox 등 글꼴을 얻기 위해 윈도우 API SystemParametersInfo를 호출하고 기본 시스템 글꼴을 얻을 수 GetStockObject을 사용합니다. 일부 위젯에는 시스템 기본 글꼴과 다른 특수 글꼴이 있습니다. 나는 Qt가 옳은 일을하고 있다고 생각하지만, 기본 일본어/중국어 세리프 폰트는 HiDPI 모니터에서 나쁘게 보인다.

그냥