问题背景:
通过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:
计算边界区域的坐标,此种方法较为麻烦,此处忽略。