これらのオーバーロード メソッドを見てください。ここでは、テキスト パラメーターの後に Bounding Rectangle を指定する必要があります (これは、最初の引数の位置にある四角形とは明らかに異なります)。
指定されたフラグに従って、指定された長方形内に指定されたテキストを描画します。boundingRect (null でない場合) は、テキスト全体を囲むために外接する四角形がどうあるべきかに設定されます。
QPainter.drawText (1)、QPainter.drawText (2)
アップデート:
事前に drawText() メソッドの境界矩形を生成したい場合は、QPainter で boundingRect() メソッドを呼び出すだけで、次のことが行われます。
現在設定されている font(); を使用して、指定されたフラグで指定された長方形の内側に描画されたときに表示される、テキストの境界長方形を返します。つまり、この関数は、同じ引数が与えられたときに drawText() 関数が描画する場所を示します。
指定されたフラグを使用して指定された長方形内にテキストが収まらない場合、関数は必要な長方形を返します。
QPainter.boundingRect
QRectF出力でBoundingRectにリンクしましたが、情報は他のバージョンにも当てはまります。
基本的に、QPainter.boundingRect() の結果を QPainter.drawText() メソッドの boundingRect パラメータ (2 番目の QRect 引数) に渡します。
更新 2:
私は非常に密集していることを心からお詫びします。PyQt と Qt では drawText の動作が異なることを忘れていました。外接する四角形は drawText 関数によって返されます (Qt のように渡されません)。さらに、外接する四角形を返す前に配置フラグを指定する必要があります。(Aaron Digulla のコメントに従って p.end() も含めました):
pic = Qt.QPicture()
p = QtGui.QPainter(pic)
brect = p.drawText(10,10,200,200, QtCore.Qt.AlignCenter, "blah")
p.end()
print brect
print pic.boundingRect()
出力は次のとおりです。
PyQt4.QtCore.QRect(100, 103, 20, 14)
PyQt4.QtCore.QRect(0, 0, 0, 0)
したがって、少なくともフラグを渡すときに drawText() メソッドの出力によって返されますが、外接する四角形を自分で設定する必要があるようです。
これは理想的な動作とは思えません。外接する四角形を自分で設定する必要があります。他の誰かがあなたが探している答えを持っていることを願っていますが、このバグを報告したいと思うかもしれません.