QFontMetricsF Class
QFontMetricsF クラスは、フォント・メトリクス情報を提供します。詳細...
ヘッダ | #include <QFontMetricsF> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承メンバを含む全メンバ一覧
- QFontMetricsFは、ペイントクラスと 暗黙の共有クラスに属しています。
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
QFontMetricsF(const QFont &font) | |
QFontMetricsF(const QFontMetrics &fontMetrics) | |
QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice) | |
QFontMetricsF(const QFontMetricsF &fm) | |
~QFontMetricsF() | |
qreal | ascent() const |
qreal | averageCharWidth() const |
QRectF | boundingRect(QChar ch) const |
QRectF | boundingRect(const QString &text) const |
(since 6.3) QRectF | boundingRect(const QString &text, const QTextOption &option) const |
QRectF | boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const |
qreal | capHeight() const |
qreal | descent() const |
QString | elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const |
qreal | fontDpi() const |
qreal | height() const |
(since 6.3) qreal | horizontalAdvance(const QString &text, const QTextOption &option) const |
qreal | horizontalAdvance(const QString &text, int length = -1) const |
qreal | horizontalAdvance(QChar ch) const |
bool | inFont(QChar ch) const |
bool | inFontUcs4(uint ch) const |
qreal | leading() const |
qreal | leftBearing(QChar ch) const |
qreal | lineSpacing() const |
qreal | lineWidth() const |
qreal | maxWidth() const |
qreal | minLeftBearing() const |
qreal | minRightBearing() const |
qreal | overlinePos() const |
qreal | rightBearing(QChar ch) const |
QSizeF | size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const |
qreal | strikeOutPos() const |
void | swap(QFontMetricsF &other) |
QRectF | tightBoundingRect(const QString &text) const |
(since 6.3) QRectF | tightBoundingRect(const QString &text, const QTextOption &option) const |
qreal | underlinePos() const |
qreal | xHeight() const |
bool | operator!=(const QFontMetricsF &other) const |
QFontMetricsF & | operator=(QFontMetricsF &&other) |
QFontMetricsF & | operator=(const QFontMetrics &other) |
QFontMetricsF & | operator=(const QFontMetricsF &fm) |
bool | operator==(const QFontMetricsF &other) const |
詳細説明
QFontMetricsF 関数は、指定されたフォントの文字と文字列のサイズを計算します。既存のQFont で QFontMetricsF オブジェクトを構築すると、そのフォントのメトリクスを取得できます。フォントが後で変更されても、フォント・メトリクス・オブジェクトは更新されません。
一旦作成されると、このオブジェクトは、フォント、そのキャラクタ、およびフォントでレンダリングされた文字列の個々のメトリクスにアクセスするための関数を提供します。
フ ォ ン ト を操作す る 関数はいくつかあ り ます :ascent() ・descent() ・height() ・leading() ・lineSpacing() は、 フ ォ ン ト の基本的なサ イ ズプ ロ パテ ィ を返 し ます。underlinePos(),overlinePos(),strikeOutPos(),lineWidth() 関数は、文字の下線、上線、取り消し線のプロパティを返します。これらの関数はすべて高速です。
また、フォント内のグリフの集合を操作する関数もいくつかあります:minLeftBearing(),minRightBearing(),maxWidth()。これらは必然的に遅くなるので、できれば避けることをお勧めします。
各文字について、horizontalAdvance(),leftBearing(),rightBearing() を取得し、inFont() を使ってそれがフォント内にあるかどうかを調べることができます。また、その文字を文字列として扱い、文字列関数を使用することもできます。
文字列関数には、文字列の幅をピクセル単位(プリンタの場合はポイント単位)で返すhorizontalAdvance ()、レンダリングされた文字列を含むのに十分な大きさの矩形を返すboundingRect ()、その矩形のサイズを返すsize ()があります。
例
QFont font("times", 24); QFontMetricsF fm(font); qreal pixelsWide = fm.horizontalAdvance("What's the advance width of this text?"); qreal pixelsHigh = fm.height();
QFont 、QFontInfo 、QFontDatabaseも参照のこと 。
メンバ関数ドキュメント
[explicit]
QFontMetricsF::QFontMetricsF(const QFont &font)
font に対する フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト を構築 し ます。
フ ォ ン ト の メ ト リ ッ ク は、font を作成す る ために用い ら れた paintdevice と 互換です。
フォント・メトリクス・オブジェクトは、作成時にコンストラクタで渡されたフォントの情報を保持し、フォントの属性が後で変更されても更新されません。
QFontMetricsF(constQFont &,QPaintDevice *) を使用して、特定のペイント・デバイスと互換性のあるフォント・メトリクスを取得します。
QFontMetricsF::QFontMetricsF(const QFontMetrics &fontMetrics)
与えられたfontMetrics オブジ ェ ク ト か ら 、 浮動小数点精度の フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト を構築 し ます。
QFontMetricsF::QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice)
font とpaintdevice に対す る フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト を構築 し ます。
フ ォ ン ト の メ ト リ ッ ク は、 渡 さ れた paintdevice と 互換です。paintdevice がnullptr
の場合、 メ ト リ ッ ク は画面互換にな り ます。 すなわち、widgets かpixmaps でテ キ ス ト を描 く ために フ ォ ン ト を使用す る と き に得 ら れ る メ ト リ ッ ク であ り 、QPicture かQPrinter では得られません。
フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト は、 コ ス ト ラ ク タ で渡された フ ォ ン ト の情報を、 それが生成 さ れた時点で保持 し ます。
QFontMetricsF::QFontMetricsF(const QFontMetricsF &fm)
fm のコピーを作成する。
[noexcept]
QFontMetricsF::~QFontMetricsF()
フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト を破棄 し 、 割 り 当て ら れてい る すべての リ ソ ース を解放 し ます。
qreal QFontMetricsF::ascent() const
フォントのアセントを返します。
フォントのアセントとは、ベースラインから文字が伸びる最も高い位置までの距離のことです。実際には、フォントデザイナーの中にはこのルールを破る人もいます。たとえば、文字の上に複数のアクセントを置いたり、特定の文字に対応させたりする場合などです。
descent()も参照のこと 。
qreal QFontMetricsF::averageCharWidth() const
フォント内のグリフの平均幅を返す。
QRectF QFontMetricsF::boundingRect(QChar ch) const
ベース ラ イ ン上の左端点を基準に し た、 文字ch の外接矩形を返 し ます。
外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 テ キ ス ト 出力が外接矩形内のすべてのピ ク セルを覆 う こ と があ る こ と に留意 し て く だ さ い。
矩形は通常、 ベース ラ イ ンの上 と 下の両方に広がっ てい る こ と に留意 し て く だ さ い。
horizontalAdvance ()も参照してください 。
QRectF QFontMetricsF::boundingRect(const QString &text) const
text で指定した文字列内の文字の外接矩形を返します。外接矩形は常に、テキストが (0, 0) で描画された場合に少なくともカバーするピクセルの集合をカバーします。
外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 返 さ れ る 矩形の幅は、horizontalAdvance() メ ソ ッ ド が返す幅 と は異な る 可能性があ る こ と に留意 し て く だ さ い。
文字列の事前幅を知りたい場合(文字列を横に並べたい場合)は、代わりにhorizontalAdvance() を使用します。
改行文字は、改行文字としてではなく通常の文字として処理されます。
外接矩形の高さは、少なくともheight() が返す値と同じ大きさになります。
horizontalAdvance()、height()、QPainter::boundingRect()も参照 。
[since 6.3]
QRectF QFontMetricsF::boundingRect(const QString &text, const QTextOption &option) const
option を用いてレイアウトされた、text で指定された文字列内の文字の外接矩形を返します。外接矩形は常に、テキストが (0, 0) で描画された場合に少なくともカバーするピクセルの集合をカバーします。
外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 返 さ れ る 矩形の幅は、horizontalAdvance() メ ソ ッ ド が返す幅 と は異な る 可能性があ る こ と に留意 し て く だ さ い。
文字列の事前幅を知りたい場合(文字列を横に並べたい場合)は、代わりにhorizontalAdvance() を使用します。
改行文字は、改行文字としてではなく通常の文字として処理されます。
外接矩形の高さは、少なくともheight() が返す値と同じ大きさになります。
この関数は Qt 6.3 で導入されました。
horizontalAdvance(),height(),QPainter::boundingRect()も参照してください 。
QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
これはオーバーロードされた関数です。
与えられたtext 内の文字の外接矩形を返します。こ れは、rect で指定 さ れた外接矩形に拘束 さ れて描画 さ れた と き に、 テ キ ス ト が覆 う ピ ク セルの集合です。rect がnullptr
オブジ ェ ク ト への参照であ る と き (た と えばデフ ォ ル ト で構築 さ れたQRectF を渡す と き) は、 外接矩形はそのサ イ ズに拘束 さ れません。
flags 引数は,以下のフラグのビット OR です:
- Qt::AlignLeft ア ラ ビ ア文字 と ヘブ ラ イ 文字の場合は右揃えにな り ますが、 それ以外は左揃えにな り ます。
- Qt::AlignRight ア ラ ビ ア文字 と ヘブ ラ イ 文字の場合は左揃えにな り ますが、 それ以外は右揃えにな り ます。
- Qt::AlignJustify 両端揃えテキストを作成します。
- Qt::AlignHCenter 水平に中央揃えします。
- Qt::AlignTop は上枠に揃えます。
- Qt::AlignBottom は下ボーダーに揃えます。
- Qt::AlignVCenter 縦中央揃え
- Qt::AlignCenter (== )
Qt::AlignHCenter | Qt::AlignVCenter
- Qt::TextSingleLine テキスト内の改行文字を無視します。
- Qt::TextExpandTabs タブを展開します(下記参照)。
- Qt::TextShowMnemonic すなわち下線。
- Qt::TextWordWrap すなわち下線。
Qt::Horizontal alignment のデフォルトは で、 vertical alignment のデフォルトは です。Qt::AlignLeft Qt::AlignTop
水平ア ラ イ メ ン ト ・ 垂直ア ラ イ メ ン ト フ ラ グの う ちのい く つかが設定 さ れてい る と 、 結果のア ラ イ メ ン ト は不定にな り ます。
これらのフラグはQt::AlignmentFlag で定義されています。
flags でQt::TextExpandTabs が設定 さ れてい る 場合、 テ キ ス ト 内の タ ブキ ャ ラ ク タ の解釈には以下の動作が用い ら れます:
- tabArray が非 NULL の場合、 テ キ ス ト 内の タ ブに対す る ピ ク セル位置の 0 終端シーケ ン ス を指定 し ます。
- tabStops が 0 でない と き は、 こ れが タ ブ間隔 と し て用い ら れます (単位は ピ ク セル)。
こ の外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ る こ と に留意 し て く だ さ い。
改行キ ャ ラ ク タ は改行 と し て処理 さ れます。
実際の文字の高 さ は異な る も のの、 "Yes" と "yes" の外接矩形の高 さ は同 じ です。
こ の関数が返す外接矩形は、 よ り 簡単な boundingRect() 関数で算出 さ れた も の よ り も 若干大き く な り ます。こ の関数は、 複数行テ キ ス ト が正 し く 整列す る ために必要な、maximum left とright のフ ォ ン ト ベーシ ョ ン を用います。ま た、 個々の文字の高 さ で はな く fontHeight() ・lineSpacing() を用いて高 さ を算出 し ます。
horizontalAdvance(),QPainter::boundingRect(),Qt::Alignmentも参照 。
qreal QFontMetricsF::capHeight() const
フォントのキャップの高さを返します。
フォントのキャップハイトとは、ベースラインからの大文字の高さのことです。具体的には、O のような丸い文字や A のような尖った文字とは対照的に、H や I のような平らな大文字の高さです。
ascent()も参照 。
qreal QFontMetricsF::descent() const
フォントの下降点を返します。
下降は、ベースラインから、文字が伸びる最も低い点までの距離です。(これは、1 ピクセルを加算する X とは異なることに注意してください。) 実際には、フォントデザイナーの中には、特定の文字に対応するためなどにこのルールを破る人もいるので、この値が小さすぎる可能性もあります (まれですが)。
ascent()も参照 。
QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const
文字列text がwidth よりも幅が広い場合、その文字列の消去バージョン(つまり、"... "を含む文字列)を返す。そうでない場合は、元の文字列を返す。
mode パラメータは、文字列を左側(例えば、"...tech")、中央(例えば、"Tr...ch")、または右側(例えば、"Trol...")のいずれに消去するかを指定する。
width は文字数ではなくピクセル数で指定する。
引数flags はオプションで、現在は値としてQt::TextShowMnemonic のみをサポートしています。
エ リ ド マ ー ク はlayoutdirection に従います。 た と えば、 右書 き レ イ ア ウ ト の場合、mode がQt::ElideLeft
の と き はテ キ ス ト の右側に、mode がQt::ElideRight
の と き はテ キ ス ト の左側に位置 し ます。
qreal QFontMetricsF::fontDpi() const
フォントの DPI を返します。
qreal QFontMetricsF::height() const
フォントの高さを返す。
leading() およびlineSpacing()も参照 。
[since 6.3]
qreal QFontMetricsF::horizontalAdvance(const QString &text, const QTextOption &option) const
option を使ってレイアウトされたtext の水平方向の進み具合をピクセル単位で返す。
進みは、text の後に続く文字を描画するのに適切な距離です。
この関数は Qt 6.3 で導入されました。
boundingRect()も参照してください 。
qreal QFontMetricsF::horizontalAdvance(const QString &text, int length = -1) const
text の最初のlength 文字の水平方向の進み量をピクセル単位で返す。length が負(デフォルト)の場合、文字列全体が使用される。length がかなり短い場合でも、text の全長が分析される。
進む距離は、text の後に続く文字を描画するのに適切な距離である。
boundingRect()も参照のこと 。
qreal QFontMetricsF::horizontalAdvance(QChar ch) const
これはオーバーロードされた関数である。
文字ch の水平方向の進み具合をピクセル単位で返す。これは、ch の後に続く文字を描画するのに適切な距離です。
メ ト リ ッ ク のい く つかを右の画像に示 し ます。中央の暗い長方形は、各文字の論理的な horizontalAdvance() をカバーしています。外側の淡い長方形は、各文字のleftBearing() とrightBearing() をカバーする。この特定のフォントの "f "の方位は両方とも負で、"o "の方位は両方とも正であることに注意。
警告: 警告 : こ の関数は、 ア ラ ビ ア文字のキ ャ ラ ク タ や、 文字列の途中のノンスペーシングマークに対しては不正確な結果を生成し ます。対話型テキストコントロールを実装する場合は、代わりにQTextLayout を使用してください。
boundingRect()も参照して ください。
bool QFontMetricsF::inFont(QChar ch) const
文字ch が フ ォ ン ト 内で有効なキ ャ ラ ク タ であ る な らtrue
を返し、 そ う でないならfalse
を返す。
bool QFontMetricsF::inFontUcs4(uint ch) const
UCS-4/UTF-32 でエン コ ーデ ィ ン グ さ れたch で与え ら れたキ ャ ラ ク タ が フ ォ ン ト 内で有効なキ ャ ラ ク タ であ る な らtrue
を返し、 そ う でないな らfalse
を返す。
qreal QFontMetricsF::leading() const
leading関数は、フォントのleadingを返します。
これは自然な行間です。
height() およびlineSpacing()も参照 。
qreal QFontMetricsF::leftBearing(QChar ch) const
フォント内の文字ch の左方位を返す。
左方位は、文字の論理原点から、文字の左端のピクセルの右方向の距離です。この値は、文字のピクセルが論理原点よりも左側にある場合は負になります。
このメトリックのグラフィカルな説明についてはhorizontalAdvance() を参照のこと。
rightBearing()、minLeftBearing()、horizontalAdvance()も参照のこと 。
qreal QFontMetricsF::lineSpacing() const
ある基準線から次の基準線までの距離を返す。
この値は常にleading()+height() に等しい。
qreal QFontMetricsF::lineWidth() const
下線と取り消し線の幅を、フォントのポイントサイズで調整して返します。
underlinePos()、overlinePos() およびstrikeOutPos()も参照 。
qreal QFontMetricsF::maxWidth() const
フォント内で最も幅の広い文字の幅を返します。
qreal QFontMetricsF::minLeftBearing() const
フォントの最小左ベアリングを返します。
これは、フォント内のすべてのキャラクタの中で最小のleftBearing(char) です。
フォントが大きい場合、この関数は非常に遅くなる可能性があることに注意。
minRightBearing() およびleftBearing()も参照 。
qreal QFontMetricsF::minRightBearing() const
フォントの最小右方位を返します。
これは、フォント内のすべてのキャラクタの中で最小のrightBearing(char) です。
フォントが大きい場合、この関数は非常に遅くなる可能性があることに注意。
minLeftBearing() およびrightBearing()も参照 。
qreal QFontMetricsF::overlinePos() const
ベースラインからオーバーラインを引くべき位置までの距離を返します。
underlinePos()、strikeOutPos() およびlineWidth()も参照 。
qreal QFontMetricsF::rightBearing(QChar ch) const
フォント内の文字ch の右方位を返す。
右方位は、後続の文字の論理原点から、その文字の右端のピクセルの左方向の距離です。この値は、文字のピクセルが文字のhorizontalAdvance() の右側に伸びている場合は負になります。
このメトリックのグラフィカルな説明についてはhorizontalAdvance() を参照のこと。
leftBearing()、minRightBearing()、horizontalAdvance()も参照のこと 。
QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
与えられたtext の文字のサイズをピクセル単位で返す。
flags 引数は、以下のフラグのビット OR です:
- Qt::TextSingleLine 改行文字を無視します。
- Qt::TextExpandTabs タブを展開する(下記参照)
- Qt::TextShowMnemonic すなわち下線。
- Qt::TextWordWrap すなわち下線。
これらのフラグはQt::TextFlag enumで定義されている。
flags でQt::TextExpandTabs が設定されている場合、 テキ ス ト 内の タ ブキ ャ ラ ク タ の解釈には以下の動作が用い ら れます:
- tabArray が NULL でない と き は、 テ キ ス ト 内の タ ブに対す る ピ ク セル位置の 0 終端シーケ ン ス を指定 し ます。
- tabStops が 0 でない と き は、 こ れが タ ブ間隔 と し て用い ら れます (単位は ピ ク セル)。
改行キ ャ ラ ク タ は改行 と し て処理 さ れます。
注意:実際の文字の高さは異なるが、"Yes" と "yes" の外接矩形の高さは同じである。
boundingRect()も参照のこと 。
qreal QFontMetricsF::strikeOutPos() const
ベースラインから三振ラインを引くべき位置までの距離を返す。
underlinePos(),overlinePos(),lineWidth()も参照 。
[noexcept]
void QFontMetricsF::swap(QFontMetricsF &other)
こ の フ ォ ン ト メ ト リ ッ ク の イ ン ス タ ン ス をother と 交換 し ます。この操作は非常に高速で、失敗することはない。
QRectF QFontMetricsF::tightBoundingRect(const QString &text) const
text で指定 さ れた文字列内のキ ッ チ と し た外接矩形を返 し ます。外接矩形は常に、テキストが (0, 0) で描画された場合にカバーするであろうピクセル集合を少なくともカバーします。
外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 返 さ れ る 矩形の幅は、horizontalAdvance() メ ソ ッ ド が返す幅 と は異な る 可能性があ る こ と に留意 し て く だ さ い。
文字列の事前幅を知りたい場合(文字列を横に並べたい場合)には、代わりにhorizontalAdvance() を使用します。
改行文字は、改行文字としてではなく通常の文字として処理されます。
horizontalAdvance()、height()、boundingRect()も参照のこと 。
[since 6.3]
QRectF QFontMetricsF::tightBoundingRect(const QString &text, const QTextOption &option) const
option を用いてレイアウトされた、text で指定された文字列内の文字を囲む、きつい外接矩形を返します。外接矩形は常に、テキストが (0,0) で描画された場合にカバーするであろうピクセル集合を少なくともカバーします。
外接矩形は、 斜体フ ォ ン ト の場合等、 (0, 0) よ り も 左へ広が る こ と があ り 、 返 さ れ る 矩形の幅は、horizontalAdvance() メ ソ ッ ド が返す幅 と は異な る 可能性があ る こ と に留意 し て く だ さ い。
文字列の事前幅を知りたい場合(文字列を横に並べたい場合)には、代わりにhorizontalAdvance() を使用します。
改行文字は改行文字としてではなく、通常の文字として処理されます。
この関数は Qt 6.3 で導入されました。
horizontalAdvance(),height(),boundingRect()も参照してください 。
qreal QFontMetricsF::underlinePos() const
基準線からアンダースコアを引くべき位置までの距離を返す。
overlinePos()、strikeOutPos() およびlineWidth()も参照 。
qreal QFontMetricsF::xHeight() const
フォントの 'x' の高さを返す。これは文字 'x' の高さと同じであることが多いが、 必ずしも同じとは限らない。
bool QFontMetricsF::operator!=(const QFontMetricsF &other) const
これはオーバーロードされた関数である。
フ ォ ン ト メ ト リ ッ ク がother フ ォ ン ト メ ト リ ッ ク と 等 し く なければtrue
を返し、 そ う でなければfalse
を返す。
operator==()も参照してください 。
[noexcept]
QFontMetricsF &QFontMetricsF::operator=(QFontMetricsF &&other)
Move-other をこのQFontMetricsF インスタンスに割り当てる。
QFontMetricsF &QFontMetricsF::operator=(const QFontMetrics &other)
このオブジェクトにother を割り当てる。
QFontMetricsF &QFontMetricsF::operator=(const QFontMetricsF &fm)
フ ォ ン ト メ ト リ ッ クfm を、 こ の フ ォ ン ト メ ト リ ッ ク オブジ ェ ク ト に割 り 当て ます。
bool QFontMetricsF::operator==(const QFontMetricsF &other) const
フ ォ ン ト メ ト リ ッ ク がother フ ォ ン ト メ ト リ ッ ク と 等 し ければtrue
を返し、 そ う でなければfalse
を返します。
二つのフ ォ ン ト メ ト リ ッ ク が等 し い と 見な さ れ る のは、 それ ら が同 じQFont か ら 作成 さ れてお り 、 かつ、 それ ら が作成 さ れたペ イ ン ト デバ イ ス が互換性を持つ と 見な さ れ る 場合です。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.