Qt 2D绘图 下载本文

可以看到它有好几个枚举变量来设置字体。下面的例子我们对主要的几个选项进行演示。 更改函数如下。

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”); }

效果如下。

这里的所有字体我们可以在设计器中进行查看。如下。

Qt 2D绘图(四)绘制路径 1.我们更改paintEvent函数如下。 void Dialog::paintEvent(QPaintEvent *) {

QPainterPath path;

path.addEllipse(100,100,50,50); path.lineTo(200,200); QPainter painter(this); painter.setPen(Qt::green); painter.setBrush(Qt::yellow);

painter.drawPath(path); }

这里我们新建了一个painterPath对象,并加入了一个圆和一条线。然后绘制这个路径。 效果如下。

2.上面绘制圆和直线都有对应的函数啊,为什么还要加入一个painterPath呢? 我们再添加几行代码,你就会发现它的用途了。 void Dialog::paintEvent(QPaintEvent *) {

QPainterPath path;

path.addEllipse(100,100,50,50); path.lineTo(200,200); QPainter painter(this); painter.setPen(Qt::green); painter.setBrush(Qt::yellow); painter.drawPath(path); QPainterPath path2; path2.addPath(path); path2.translate(100,0);

painter.drawPath(path2); }

效果如下。

这里我们又新建了一个painterPath对象path2,并将以前的path添加到它上面,然后我们更改了原点坐标为(100,0),这时你发现我们复制了以前的图形。这也就是painterPath类最主要的用途,它能保存你已经绘制好的图形。 3.这里我们应该注意的是绘制完一个图形后,当前的位置在哪里。 例如:

void Dialog::paintEvent(QPaintEvent *) {

QPainterPath path; path.lineTo(100,100); path.lineTo(200,100); QPainter painter(this); painter.drawPath(path); }

效果如下。

可以看到默认是从原点(0,0)开始绘图的,当画完第一条直线后,当前点应该在(100,100)处,然后画第二条直线。 再如:

void Dialog::paintEvent(QPaintEvent *) {

QPainterPath path; path.addRect(50,50,40,40); path.lineTo(200,200); QPainter painter(this); painter.drawPath(path); }

效果如下。可见画完矩形后,当前点在矩形的左上角顶点,然后从这里开始画直线。