QPainter
類別中的drawText()方法可以在繪圖裝置上繪製文字,也可以設定繪製時所用的字型,在設定好字型之後,我們可以用fontMetrics()方法
取得字型的幾何資訊,例如ascent(字元最高點至字元底線baseline距離)、descent(字元最低點到字元底線距離)、leading(兩
行之間的空間值)height(字體印字時的高度,相當於 ascent+descent
+1,1pixel是字元底線的高度)與linespacing(height+leading)等等。

下面這個程式是文字繪製的簡單示範,利用迴圈展示三種字型、五種大小不同組合下的文字繪製效果:
#include <qapplication.h> #include <qwidget.h> #include <qpainter.h> #include <qpen.h> #include <qpixmap.h> #include <qdrawutil.h>
class DrawView : public QWidget { public: DrawView() { setBackgroundColor(white); }
protected: void drawFonts(QPainter*); void paintEvent(QPaintEvent*); };
void DrawView::drawFonts(QPainter *p) { p->save(); static const char *fonts[] = {"Helvetica", "Courier", "Times", 0}; static int sizes[] = {10, 12, 18, 24, 36, 0}; int f = 0; int y = 0; while (fonts[f]) { int s = 0; while (sizes[s]) { QFont font(fonts[f], sizes[s]); p->setFont(font); QFontMetrics fm = p->fontMetrics();
y += fm.ascent(); p->drawText(10, y, "Hello! Welcome to caterpillar!"); y += fm.descent(); s++; } f++; } p->restore(); }
void DrawView::paintEvent(QPaintEvent*) { QPainter p(this); drawFonts(&p); }
int main(int argc, char **argv) { QApplication app(argc, argv); DrawView draw; app.setMainWidget(&draw); draw.show(); return app.exec(); }
下圖為執行時的結果畫面:

|
|