本周开始学习的是Qt5的内容。

根据老师的要求,需要尝试做一个如下图所示的坐标系。

clipboard.png

经过我的查询,发现坐标系不能直接拖控件,只能用代码来完成。

首先,需要创建一块画布。

clipboard.png

效果如下

clipboard.png

然后在白色的画布上就可以用QPaint来画图了。

clipboard.png

效果如下

clipboard.png

然后需要用一个循环画出刻度线以及标上刻度

// 画上x轴刻度线
for(int i=0;i<10;i++)//分成10份
{
    // 选取合适的坐标,绘制一段长度为4的直线,用于表示刻度
    painter.drawLine(pointx+(i+1)*width/10,pointy,pointx+(i+1)*width/10,pointy+4);
    painter.drawText(pointx+(i+0.9)*width/10,
                     pointy+20,QString::number((int)((i+1)*((double)n))));
}
// 在结尾的地方标上单位。
painter.drawText(655,pointy+10,QString("T/℃"));

同理,Y轴的刻度也是这样做,然后就得到了一个坐标系

clipboard.png

然后,我们需要填充虚线,制成虚线格
这时候就要用到QPen定义一个新的画笔

QPen penDot;
penDot.setStyle(Qt::DotLine);// 定义虚线
penDot.setWidth(2);
painter.setPen(penDot);

上面我们设置的刻度长度是4,现在只需要把刻度线设置成和坐标轴一样长度,就变成了一个由虚线构成的坐标系了

clipboard.png


户瑞彤
46 声望8 粉丝

引用和评论

0 条评论