QFont::styleHint()
QFont::styleHint()
の役割
QFont::styleHint()
は、以下の目的で役立ちます。
- フォントの自動選択: アプリケーションが特定のフォントファミリーを使用したいが、どのスタイルバリエーション(例: Arial Regular, Arial Bold, Arial Italicなど)が最適かわからない場合に、システムから推奨されるスタイルヒントを得ることで、より適切なフォントを選択できます。
- プラットフォームの一貫性: OSやデスクトップ環境によっては、特定のUI要素に特定のフォントスタイルを使用することが推奨されています。
styleHint()
は、そのようなプラットフォーム固有の慣習に従うのに役立ちます。 - アクセシビリティ: 例えば、特定の状況下でテキストをより読みやすくするために、少し太めのフォントが推奨される場合があります。
styleHint()
は、そのようなアクセシビリティ関連の推奨事項を反映するのに役立ちます。
戻り値
QFont::styleHint()
はQFont::StyleHint
enum型の値を返します。このenumには、以下のような値が含まれます(全てではありませんが、代表的なもの):
QFont::Decorative
: 装飾的な書体が推奨されることを示します。QFont::System
: システムのデフォルトフォントが推奨されることを示します。QFont::Fantasy
: ファンタジー風の書体が推奨されることを示します。QFont::Cursive
: 筆記体のような書体が推奨されることを示します。QFont::TypeWriter
: 等幅フォントが推奨されることを示します(例: Courier New, Consolas)。QFont::Serif
: セリフ体が推奨されることを示します(例: Times New Roman, Georgia)。QFont::SansSerif
: サンセリフ体が推奨されることを示します(例: Arial, Helvetica)。QFont::NoStyleHint
: スタイルヒントがないことを示します。
これらのヒントは、あくまで「ヒント」であり、強制ではありません。アプリケーションはこれらのヒントを尊重してフォントを選択することもできますし、独自の基準でフォントを選択することもできます。
#include <QApplication>
#include <QFont>
#include <QLabel>
#include <QDebug>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QFont font;
qDebug() << "Current font family:" << font.family();
qDebug() << "Style Hint:" << font.styleHint();
// 例として、システム推奨のフォントファミリーを取得し、それに合ったスタイルヒントを適用
QFont systemFont;
systemFont.setStyleHint(QFont::System); // システムヒントを設定
qDebug() << "System font family:" << systemFont.family();
qDebug() << "System font style hint:" << systemFont.styleHint(); // QFont::System を返す可能性が高い
QLabel label("Hello, Qt!");
label.setFont(systemFont); // システム推奨のフォントをラベルに設定
label.show();
return a.exec();
}
この例では、現在のフォントとシステム推奨のフォントのスタイルヒントを表示しています。QFont::setStyleHint()
は、QFont
オブジェクトに特定のヒントを設定するために使用されますが、QFont::styleHint()
はその設定されたヒント(またはデフォルトのヒント)を取得します。
QFont::styleHint()
は、あくまで「ヒント」を返す関数であり、プログラムの実行中にエラーを吐き出すことはほとんどありません。問題が発生する場合、それは通常、このヒントの「解釈」や「利用方法」に起因します。
想定したフォントスタイルが適用されない
問題
QFont::styleHint()
で取得したスタイルヒントに基づいてフォントを設定したのに、期待通りのフォントスタイル(例: 等幅、セリフ体など)が適用されない。
原因とトラブルシューティング
- スタイルシートの影響: Qtスタイルシートを使用している場合、ウィジェットに直接設定されたフォントがスタイルシートによって上書きされることがあります。
- 対策: スタイルシートがフォント設定に影響を与えていないか確認してください。スタイルシートでフォントを設定している場合、
setFont()
よりもスタイルシートの定義が優先されます。特定のウィジェットにのみフォントを適用したい場合は、objectName
を使ってスタイルシートでターゲットを指定することも有効です。
- 対策: スタイルシートがフォント設定に影響を与えていないか確認してください。スタイルシートでフォントを設定している場合、
- フォントマッチングアルゴリズムの理解不足: Qtのフォントマッチングアルゴリズムは、まずファミリー名を最優先し、次にポイントサイズ、ウェイト、スタイルなどを考慮します。
styleHint()
は、フォントファミリーが見つからない場合に代替フォントを選択する際の補助的な役割を果たすことがあります。- 対策:
QFont
を設定する際に、より具体的なフォントファミリー名とスタイル(QFont::setWeight()
,QFont::setItalic()
など)を指定してみてください。styleHint()
はあくまで補助として使用し、メインのフォント選択ロジックはより明確にするのが良いでしょう。
- 対策:
- フォントの可用性: 意図するスタイルのフォントがユーザーのシステムにインストールされていない可能性があります。
- 対策:
QFontDatabase
を使用して、システムに利用可能なフォントファミリーやスタイルを列挙し、目的のフォントが存在するかを確認します。#include <QFontDatabase> #include <QDebug> // ... QStringList families = QFontDatabase::families(); qDebug() << "Available font families:"; for (const QString &family : families) { qDebug() << " " << family; QStringList styles = QFontDatabase::styles(family); qDebug() << " Styles for" << family << ":" << styles.join(", "); }
- アプリケーションに特定のフォントをバンドルし、
QFontDatabase::addApplicationFont()
でロードすることも検討してください。
- 対策:
- ヒントは保証ではない:
styleHint()
は、あくまでシステムや環境が推奨するスタイルを示すヒントであり、そのスタイルを持つフォントがシステムにインストールされていることや、アプリケーションがそのフォントを正確に選択できることを保証するものではありません。- 対策:
QFontInfo
クラスを使用して、実際に適用されたフォントの情報を確認してください。QFontInfo::family()
,QFontInfo::pointSize()
,QFontInfo::weight()
,QFontInfo::italic()
などで、実際に使用されているフォントのプロパティを確認できます。
- 対策:
アプリケーション起動時のフォント関連の問題
問題
アプリケーションの起動時、特にQApplication
インスタンスが作成される前にQFont
を使用しようとするとクラッシュや予期しない動作が発生する。
原因とトラブルシューティング
- 静的オブジェクトの初期化順序: 静的オブジェクトとして
QFont
やQTextDocument
などを作成している場合、QApplication
がまだ初期化されていない状態でそれらが構築されてしまうことがあります。- 対策: 静的オブジェクトの初期化順序に注意し、
QApplication
が完全に初期化された後にフォント関連の処理が実行されるように設計します。シングルトンパターンを使用している場合などは、遅延初期化(Lazy Initialization)を検討します。
- 対策: 静的オブジェクトの初期化順序に注意し、
QApplication
の存在:QFont
オブジェクトは、GUI環境と関連するリソース(フォントデータベースなど)に依存するため、QApplication
インスタンスが有効である必要があります。- 対策:
main()
関数内で、QApplication
オブジェクトを最初に作成し、その後にQFont
オブジェクトを初期化するようにしてください。
int main(int argc, char *argv[]) { QApplication a(argc, argv); // まずQApplicationを作成 QFont font; // その後にQFontを使用 // ... return a.exec(); }
- 対策:
異なるOSや環境でのフォント表示の不一致
問題
開発環境(OS)と異なるOSや環境でアプリケーションを実行すると、styleHint()
が異なる値を返したり、フォントの見た目が変わってしまう。
原因とトラブルシューティング
- OS/デスクトップ環境依存性:
styleHint()
は、OSやデスクトップ環境(Windows, macOS, Linux/KDE, GNOMEなど)の推奨に基づいて値を返すため、環境によって異なるヒントが提供されることがあります。また、各OSのフォントレンダリングエンジンの違いも見た目に影響します。- 対策: これはある程度避けられない挙動ですが、以下の方法で対処できます。
- 主要なプラットフォームでのテスト: アプリケーションをデプロイする予定のすべての主要なプラットフォームでテストを行い、フォントの表示が許容範囲内であることを確認します。
- フォントの埋め込み: 厳密な見た目の一貫性が必要な場合は、アプリケーションにフォントファイルを埋め込み、すべてのプラットフォームで同じフォントを使用するようにします。ただし、ファイルサイズが増加し、ライセンスの問題が発生する可能性があります。
- フォールバックフォントの指定:
QFont::setFamily()
で複数のフォントファミリー名をカンマ区切りで指定することで、優先順位をつけてフォールバックフォントを指定できます。
これにより、指定したフォントがない場合に代替フォントが使用されます。QFont font("Arial, Helvetica, sans-serif", 10);
- 対策: これはある程度避けられない挙動ですが、以下の方法で対処できます。
パフォーマンスへの影響
問題
多数のQFont
オブジェクトを作成したり、頻繁にフォント関連の操作を行うと、アプリケーションのパフォーマンスが低下する。
- フォントマッチングのコスト:
QFont
オブジェクトを作成し、フォントマッチングプロセスが実行される際には、システムにインストールされているフォントデータベースを検索するため、ある程度のオーバーヘッドが発生します。- 対策:
QFont
の使い回し: 可能な限りQFont
オブジェクトを再利用し、不要なQFont
オブジェクトの生成を避けます。- キャッシュ: よく使用するフォントオブジェクトをキャッシュし、必要に応じて取得するようにします。
QFontMetrics
の利用: テキストのサイズ測定など、表示に関する情報を取得する際には、すでにロードされているフォントからQFontMetrics
オブジェクトを作成して使用します。
- 対策:
例1: 現在のフォントのスタイルヒントを取得する
この例では、デフォルトのQFont
オブジェクトを作成し、そのスタイルヒントを取得して表示します。
#include <QApplication>
#include <QFont>
#include <QDebug> // デバッグ出力用
int main(int argc, char *argv[]) {
QApplication a(argc, argv); // QApplicationオブジェクトを最初に作成します
QFont defaultFont; // デフォルトのフォントオブジェクトを作成
qDebug() << "現在のフォントファミリー:" << defaultFont.family();
// QFont::styleHint() を呼び出してスタイルヒントを取得
QFont::StyleHint hint = defaultFont.styleHint();
// 取得したヒントに応じてメッセージを表示
switch (hint) {
case QFont::NoStyleHint:
qDebug() << "スタイルヒント: QFont::NoStyleHint (ヒントなし)";
break;
case QFont::SansSerif:
qDebug() << "スタイルヒント: QFont::SansSerif (サンセリフ体)";
break;
case QFont::Serif:
qDebug() << "スタイルヒント: QFont::Serif (セリフ体)";
break;
case QFont::TypeWriter:
qDebug() << "スタイルヒント: QFont::TypeWriter (等幅フォント)";
break;
case QFont::OldEnglish:
qDebug() << "スタイルヒント: QFont::OldEnglish (オールドイングリッシュ)";
break;
case QFont::Cursive:
qDebug() << "スタイルヒント: QFont::Cursive (筆記体)";
break;
case QFont::Fantasy:
qDebug() << "スタイルヒント: QFont::Fantasy (ファンタジー風)";
break;
case QFont::System:
qDebug() << "スタイルヒント: QFont::System (システム推奨フォント)";
break;
case QFont::Decorative:
qDebug() << "スタイルヒント: QFont::Decorative (装飾的フォント)";
break;
default:
qDebug() << "スタイルヒント: 未知のヒント (" << hint << ")";
break;
}
return 0; // アプリケーションの実行は不要なので0を返す
}
解説
- 実行結果は、OSやデスクトップ環境のデフォルトフォント設定に依存します。例えば、Windowsでは
QFont::System
やQFont::SansSerif
に近い結果、macOSでも同様の結果が出やすいです。 switch
文を使用して、取得したQFont::StyleHint
enumの値に基づいて、人間が理解しやすいメッセージを出力しています。defaultFont.styleHint();
を呼び出すことで、このフォントオブジェクトが持つスタイルヒントを取得します。QFont defaultFont;
で、現在のシステムのデフォルトフォント設定に基づいたQFont
オブジェクトを作成します。
例2: 特定のスタイルヒントを持つフォントを要求する(ヒントの利用)
この例では、QFont::setStyleHint()
を使用して、特定の種類のフォント(例えば、QFont::TypeWriter
:等幅フォント)を要求し、その結果実際にどのようなフォントが選ばれたかを確認します。
#include <QApplication>
#include <QFont>
#include <QLabel>
#include <QDebug>
#include <QFontInfo> // フォント情報の取得用
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// 等幅フォントのスタイルヒントを設定したフォントオブジェクトを作成
QFont typewriterFont;
typewriterFont.setStyleHint(QFont::TypeWriter); // 等幅フォントのヒントを設定
typewriterFont.setPointSize(12); // サイズを設定
// QLabelを作成し、上記で設定したフォントを適用
QLabel label("This is a test text.\n"
"It should ideally be monospaced.\n"
"0123456789 ABCdefg HIJklmn");
label.setFont(typewriterFont);
// 実際に適用されたフォントの情報を取得
QFontInfo fontInfo(label.font());
qDebug() << "要求したスタイルヒント: QFont::TypeWriter";
qDebug() << "実際に適用されたフォントファミリー:" << fontInfo.family();
qDebug() << "実際に適用されたフォントのポイントサイズ:" << fontInfo.pointSize();
qDebug() << "実際に等幅か:" << fontInfo.fixedPitch(); // fixedPitch() で等幅かどうかを確認
label.setWindowTitle("Typewriter Font Example");
label.show();
return a.exec();
}
解説
- 重要な注意点:
setStyleHint()
はあくまで「ヒント」であり、Qtがそのヒントに完全に合致するフォントを見つけられることを保証するものではありません。システムに適切な等幅フォントがインストールされていれば、Courier New や Consolas などが選択される可能性が高いですが、そうでない場合は、利用可能な最も近いフォントが選択されます。 fontInfo.fixedPitch()
は、そのフォントが等幅フォントであるかどうかを返します。true
であれば等幅、false
であればプロポーショナルフォントです。QFontInfo fontInfo(label.font());
を使用して、実際にQLabel
に適用されたフォントの情報を取得します。これにより、QtがTypeWriter
ヒントに基づいてどのようなフォントを選択したかを確認できます。QLabel
にこのフォントを設定し、テキストを表示します。QFont typewriterFont;
でフォントオブジェクトを作成し、typewriterFont.setStyleHint(QFont::TypeWriter);
で「等幅フォントが良い」というヒントを与えます。
異なるスタイルヒントを試して、その結果得られるフォントファミリーの変化を見る例です。
#include <QApplication>
#include <QFont>
#include <QDebug>
// フォントのスタイルヒントとそれに続くフォントファミリーを表示するヘルパー関数
void printFontInfo(const QString& hintName, QFont::StyleHint hint) {
QFont font;
font.setStyleHint(hint);
qDebug() << "スタイルヒント: " << hintName << " -> 選択されたフォントファミリー: " << font.family();
}
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
printFontInfo("QFont::SansSerif", QFont::SansSerif);
printFontInfo("QFont::Serif", QFont::Serif);
printFontInfo("QFont::TypeWriter", QFont::TypeWriter);
printFontInfo("QFont::System", QFont::System);
printFontInfo("QFont::NoStyleHint (Default)", QFont::NoStyleHint); // 明示的にヒントなし
return 0;
}
- この例の出力は、実行環境(OSやインストールされているフォント)に大きく依存します。例えば、
QFont::SansSerif
は "Arial" や "Helvetica"、QFont::Serif
は "Times New Roman" や "Georgia"、QFont::TypeWriter
は "Courier New" や "Consolas" などが選択されることが多いです。 - 異なる
QFont::StyleHint
の値を渡して、それぞれのヒントがシステムでどのようにフォント選択に影響するかを確認できます。 printFontInfo
というヘルパー関数を作成し、指定されたスタイルヒントを設定したQFont
オブジェクトが、最終的にどのフォントファミリーを選択したかを表示します。
フォントファミリー名を直接指定する (QFont::setFamily())
これは最も直接的で一般的な方法です。特定のフォント(例: Arial, Times New Roman, Consolas)を使用したい場合に、そのフォントファミリー名を直接指定します。
メリット
- 複数のフォールバックフォントを指定できる(カンマ区切り)。
- どのフォントを使用したいかが明確。
デメリット
- OSや環境によってデフォルトのフォントセットが異なるため、プラットフォーム間で一貫したフォント選択が難しい場合がある。
- 指定したフォントがユーザーのシステムにインストールされていない場合、Qtが代替フォントを選択することになり、意図しない見た目になる可能性がある。
コード例
#include <QApplication>
#include <QFont>
#include <QLabel>
#include <QDebug>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// 単一のフォントファミリー名を指定
QFont specificFont1("Arial");
specificFont1.setPointSize(12);
QLabel label1("Arial Font", &label1);
label1.setFont(specificFont1);
label1.show();
// 複数のフォールバックフォントファミリー名を指定
// 'MyCustomFont' がなければ 'Helvetica'、それもなければ一般的な 'sans-serif' が使われる
QFont specificFont2("MyCustomFont, Helvetica, sans-serif");
specificFont2.setPointSize(14);
QLabel label2("Custom/Fallback Font", &label2);
label2.move(0, 50); // 位置をずらす
label2.setFont(specificFont2);
label2.show();
qDebug() << "Label1 font family:" << label1.font().family();
qDebug() << "Label2 font family:" << label2.font().family();
return a.exec();
}
フォントのウェイト、イタリック、固定ピッチなどを直接設定する (QFont::setWeight(), QFont::setItalic(), QFont::setFixedPitch())
styleHint()
が「サンセリフ体」のような一般的なタイプをヒントとして与えるのに対し、これらのメソッドはフォントの具体的な属性を直接設定します。
メリット
styleHint()
と組み合わせて使用することも可能。- フォントの太さ、斜体、等幅かどうかなど、特定の視覚的特性を直接制御できる。
デメリット
- 指定した属性を持つフォントが利用できない場合、Qtが類似のフォントでシミュレーションすることがある(例: 太字フォントがない場合に、Qtが通常のフォントを太く描画する)。
コード例
#include <QApplication>
#include <QFont>
#include <QLabel>
#include <QDebug>
#include <QFontInfo> // フォント情報用
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QFont boldFont("Arial");
boldFont.setWeight(QFont::Bold); // 太字に設定
boldFont.setPointSize(12);
QLabel labelBold("This is Bold Text", &labelBold);
labelBold.setFont(boldFont);
labelBold.show();
QFont italicFont("Times New Roman");
italicFont.setItalic(true); // 斜体に設定
italicFont.setPointSize(12);
QLabel labelItalic("This is Italic Text", &labelItalic);
labelItalic.move(0, 30);
labelItalic.setFont(italicFont);
labelItalic.show();
QFont fixedPitchFont("Consolas"); // 具体的な等幅フォントを指定
fixedPitchFont.setFixedPitch(true); // 等幅であることを示すヒント
fixedPitchFont.setPointSize(12);
QLabel labelFixedPitch("0123456789 ABCabc", &labelFixedPitch);
labelFixedPitch.move(0, 60);
labelFixedPitch.setFont(fixedPitchFont);
labelFixedPitch.show();
// 実際に適用されたフォントが等幅か確認
QFontInfo fi(labelFixedPitch.font());
qDebug() << "Consolas is fixed pitch:" << fi.fixedPitch();
return a.exec();
}
フォントデータベースを使用する (QFontDatabase)
QFontDatabase
クラスは、システムにインストールされているフォントに関する情報を提供し、特定のフォントの検索や、アプリケーション固有のフォントの追加に使用できます。
メリット
- アプリケーションにカスタムフォントを埋め込んでロードできる。
- 特定のスタイル(例: "Regular", "Bold", "Italic")を持つフォントを直接取得できる。
- システムに利用可能なフォントを探索できる。
デメリット
styleHint()
よりも低レベルな制御が必要。
コード例 (特定のフォントのスタイルを取得)
#include <QApplication>
#include <QFont>
#include <QFontDatabase>
#include <QLabel>
#include <QDebug>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// 利用可能なフォントファミリーとスタイルを列挙
qDebug() << "Available font families and styles:";
for (const QString& family : QFontDatabase::families()) {
qDebug() << " " << family;
for (const QString& style : QFontDatabase::styles(family)) {
qDebug() << " - " << style;
}
}
// "Arial" フォントの "Bold" スタイルを取得
QFont arialBold = QFontDatabase::font("Arial", "Bold", 12);
if (!arialBold.family().isEmpty()) { // フォントが見つかったか確認
QLabel label("Arial Bold from Database", &label);
label.setFont(arialBold);
label.show();
qDebug() << "Applied font family:" << label.font().family()
<< ", Style:" << QFontDatabase::font(label.font().family(), "", 0).styleString(label.font().style());
} else {
qDebug() << "Arial Bold not found.";
}
return a.exec();
}
コード例 (アプリケーションフォントの追加)
// .pro ファイルに以下を追加 (例: myfont.ttf をプロジェクトに追加)
// RESOURCES += fonts/myfont.qrc
// fonts/myfont.qrc の内容:
// <RCC>
// <qresource prefix="/">
// <file>myfont.ttf</file>
// </qresource>
// </RCC>
#include <QApplication>
#include <QFont>
#include <QFontDatabase>
#include <QLabel>
#include <QDebug>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// アプリケーションにフォントを追加
// ':/' はQtリソースシステム内のパスを示す
int fontId = QFontDatabase::addApplicationFont(":/myfont.ttf");
QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);
if (!fontFamilies.isEmpty()) {
QString fontFamily = fontFamilies.at(0);
qDebug() << "Loaded application font:" << fontFamily;
QFont customFont(fontFamily, 16);
QLabel label("Hello, Custom Font!", &label);
label.setFont(customFont);
label.show();
} else {
qDebug() << "Failed to load application font.";
}
return a.exec();
}
Qtスタイルシートを使用する
Qtのスタイルシートは、CSSのような構文でUI要素の見た目を設定するための強力なツールです。フォントもスタイルシートで指定できます。
メリット
- 一貫したUIテーマを簡単に適用できる。
- UIの見た目をプログラムロジックから分離できる。
デメリット
- 実行時の動的なフォント変更が
setFont()
よりも複雑になる場合がある。 - プログラム的にフォントを微調整する柔軟性は低い。
コード例
#include <QApplication>
#include <QLabel>
#include <QPushButton>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// QLabel のフォントをスタイルシートで設定
QLabel label("Hello from StyleSheet!", &label);
label.setStyleSheet("QLabel { font-family: 'Comic Sans MS'; font-size: 18px; color: blue; }");
label.show();
// QPushButton のフォントをスタイルシートで設定
QPushButton button("Click Me!", &button);
button.setStyleSheet("QPushButton { font-family: 'Verdana'; font-size: 16px; font-weight: bold; }");
button.move(0, 50); // 位置をずらす
button.show();
return a.exec();
}
システム標準のフォントを使用する
QApplication::font()
や QApplication::setFont()
を使用して、アプリケーション全体のデフォルトフォントを設定したり、取得したりできます。特定のウィジェットでは、QWidget::font()
を使用してそのウィジェットのフォントを取得できます。
メリット
- OSのアクセシビリティ設定に準拠しやすい。
- アプリケーション全体で一貫したシステムフォント設定を適用できる。
デメリット
- 個々のウィジェットに対して異なるフォントを設定したい場合には、これだけでは不十分。
コード例
#include <QApplication>
#include <QLabel>
#include <QDebug>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// アプリケーションのデフォルトフォントを取得
QFont appFont = QApplication::font();
qDebug() << "Application default font family:" << appFont.family();
qDebug() << "Application default font size:" << appFont.pointSize();
// 全てのウィジェットに適用されるフォントを設定(上書き)
QFont newAppFont("Ubuntu", 12); // 例: Ubuntu フォントを設定
QApplication::setFont(newAppFont);
QLabel label1("This uses the new application font.", &label1);
label1.show();
QLabel label2("This also uses the new application font.", &label2);
label2.move(0, 30);
label2.show();
return a.exec();
}
QFont::styleHint()
はフォントの「一般的なタイプ」を指定する高レベルなヒントですが、上記の代替方法を組み合わせることで、よりきめ細かく、または異なるアプローチでフォントを制御できます。
QApplication::setFont()
: アプリケーション全体の標準フォントを設定したい場合。- Qtスタイルシート: UIの視覚的なテーマを統一的に管理したい場合。
QFontDatabase
: システムにインストールされているフォントを探索したり、カスタムフォントをアプリケーションに含めたい場合。QFont::setWeight()
,setItalic()
など: フォントの特定のスタイル属性を制御したい場合。QFont::setFamily()
: 特定のフォントを確実に使いたい場合。