2017-01-06 11 views
0

Windows 7で使用するデフォルトのフォントQtがシステムフォントと少し違うことに気付きました。QtアプリケーションでWindowsフォントを使用する方法

それは、この例では、文字「O」にはっきりと見えるのです:

enter image description here   enter image description here

そしてここでは、私のコードです:

私は自分のアプリケーションで正確に同じフォントを設定することができますどのように
int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QMainWindow mainWin; 

    QWidget* central = new QWidget(&mainWin); 
    central->setLayout(new QHBoxLayout); 

    QPushButton* ba = new QPushButton("Tool A", central); 
    central->layout()->addWidget(ba); 

    QPushButton* bb = new QPushButton("Tool B", central); 
    central->layout()->addWidget(bb); 

    mainWin.setCentralWidget(central); 
    mainWin.setWindowTitle("Tools"); 
    mainWin.show(); 
    return app.exec(); 
} 

窓が使用するように?

Qtのバージョン:5.7.1

ありがとう!

+0

これらは2つの異なるサイズであり、グリフの図形は低い点サイズでは明確にラスタライズされるため、最初にマッチングサイズを試してみてください。 –

答えて

0

私の解決策は、Windows上でのみ機能します。それが意図されていない場合は、プリプロセッサを使用してください!

簡単な解決策は、OS機能を使用することです。このコードはあなたにフォントの名前を与える必要があります。 Qtのために

//please note that this requires minimum Windows 7, for older versions a small change is needed over preprocessors 
#include<Windows.h> 
std::wstring getSystemDefaultFontName() { 
    NONCLIENTMETRICS ncm; 
    ncm.cbSize = sizeof(ncm); 
    HRESULT hr; 
    hr = SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, 0); 
    if (hr == 0) 
     return std::wstring(); 
    return std::wstring(ncm.lfMenuFont.lfFaceName); //There are different fonts for each section. I choose menu font but something else may be better? 
} 

単純に言う:

QFont systemFont(QString::fromWCharArray(getSystemDefaultFontName().c_str()), 8, QFont::Bold, true); 
QApplication::setFont(systemFont); 

をしかしQtはWindowsに比べて異なるフォントをレンダリングする可能性があるため、フォントはまだ多少異なって見えることができますことを、心に留めておいてください。

関連する問題