為什么要做這次文字的介紹,因為在一般的教材中,還真沒有文字的描述:
1.繪制最簡單的文字。
我們更改重繪函數如下:
void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawText(100,100,”yafeilinux”);
}
我們在(100,100)的位置顯示了一行文字,效果如下。
2.為了更好的控制字體的位置。我們使用另一個構造函數。在幫助里查看drawText,如下。
這里我們看到了構造函數的原型和例子。其中的flags參數可以控制字體在矩形中的位置。我們更改函數內容如下。
void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QRectF ff(100,100,300,200);
//設置一個矩形
painter.drawRect(ff);
//為了更直觀地看到字體的位置,我們繪制出這個矩形
painter.setPen(QColor(Qt::red));
//設置畫筆顏色為紅色
painter.drawText(ff,Qt::AlignHCenter,”yafeilinux”);
//我們這里先讓字體水平居中
}
效果如下。
可以看到字符串是在最上面水平居中的。如果想讓其在矩形正中間,我們可以使用Qt::AlignCenter。
這里我們也可以使用兩個枚舉變量進行按位與操作,例如可以使用Qt::AlignBottom|Qt::AlignHCenter實現讓文字顯示在矩形下面的正中間。效果如下。
對於較長的字符串,我們也可以利用“\n”進行換行,例如”yafei\nlinux”。效果如下。
3.如果要使文字更美觀,我們就需要使用QFont類來改變字體。先在幫助中查看一下這個類。
可以看到它有好幾個枚舉變量來設置字體。下面的例子我們對主要的幾個選項進行演示。
更改函數如下。
void Dialog::paintEvent(QPaintEvent *)
{
QFont font(“Arial”,20,QFont::Bold,true);
//設置字體的類型,大小,加粗,斜體
font.setUnderline(true);
//設置下划線
font.setOverline(true);
//設置上划線
font.setCapitalization(QFont::SmallCaps);
//設置大小寫
font.setLetterSpacing(QFont::AbsoluteSpacing,5);
//設置間距
QPainter painter(this);
painter.setFont(font);
//添加字體
QRectF ff(100,100,300,200);
painter.drawRect(ff);
painter.setPen(QColor(Qt::red));
painter.drawText(ff,Qt::AlignCenter,”yafeilinux”);
}
效果如下。
這里的所有字體我們可以在設計器中進行查看。如下。
<!-- end .entry -->