问题背景:

通过QPdfWriter生成PDF报告绘制表格时,绘制的线条超出了表格区域,限制线条绘制的指定区域,超出区域自动忽略。

解决方法:

方法1:指定绘制区域
Qt提供了 QPainter::setClipRegion(), QPainter::setClipRect() 两种方法设置绘制区域,参考代码如下:

QPdfWriter* m_pdfWriter;
QPainter m_PainterAI;

m_PainterAI.begin(m_pdfWriter);
QRect rect = m_PainterAI.viewport();
m_Width = rect.width();
m_Height = rect.height();
QRegion clipRegion(m_Width*0.66, m_Height*0.15, m_Width*0.3, m_Height);
m_PainterAI.setClipRegion(clipRegion);

注意:若有下个页面进行绘制时,需恢复原有区域
eg:

QRegion clipRegion(0, 0, m_Width, m_Height);
m_PainterAI.setClipRegion(clipRegion);

方法2:
计算边界区域的坐标,此种方法较为麻烦,此处忽略。

03-08 21:43