博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决输入数据过长导致打印预览时报中断问题
阅读量:6396 次
发布时间:2019-06-23

本文共 1723 字,大约阅读时间需要 5 分钟。

hot3.png

#define MAXQSTRINGLENGTH_NORMAL 15

#define MAXNUM_LETTER_W 9

在编辑框输入时做文本长度控制:

void MainWindowTable::on_textChange(QStandardItem* item)

{
if (isInputing)
{
return;
}
m_hasModify = true;
if (item->text().length()>MAXQSTRINGLENGTH_NORMAL)
{
item->setText(item->text().left(MAXQSTRINGLENGTH_NORMAL));
}
else if(item->text().length() >= MAXNUM_LETTER_W)
{
int nCountChineseStr = 0;
for (int i = 0 ;i<item->text().length();i++)
{
if (item->text().at(i)>(char)127)
{
nCountChineseStr++;
}
}
if (item->text().count(QString("W"))/*+ item->text().count(QString("M"))*/ + nCountChineseStr> MAXNUM_LETTER_W)
{
item->setText(item->text().left(MAXNUM_LETTER_W));
}
}
.......

}

绘制表格时提取固定长度:

for (int row = 0; row < rows+1; row++)//将view表的内容画到表格中去

{
for(int column = 0; column < colnum_num; column++)
{
QModelIndex idx = printTable->model()->index(row,column);
option.rect = printTable->visualRect(idx);
if (printTable->item(row,column))
{
QRectF rt(option.rect.left(),option.rect.top(),option.rect.width(),option.rect.height());
rt = rt.translated(offPt);
if (row != 0 && column == 0)//行头
{
painter.drawText(rt,Qt::AlignCenter,printTable->item(row,column)->text());
}
else if (row == 0 &&printTable->item(row,column)->text() != "" )//列头
{
painter.drawText(rt,Qt::AlignCenter,printTable->item(row,column)->text());
}
else if(printTable->item(row,column)->text() != "")
{
QString str = printTable->item(row,column)->text();
/*if(row == 10 || row == 11 || row == 12)
str = str.left(14);
else
str = str.left(8);*/
str = str.left(MAXQSTRINGLENGTH_NORMAL);
//每页显示5组数据,腾出的宽度分配给每列,这样子绘制图像时的QRect能存放14位长的字符串,才不会想之前那样报错。原始数据长度不变,不存在数据截断情况。
painter.drawText(rt,Qt::AlignCenter,str);
}
}
}

这样子就没有了之间的报错问题

转载于:https://my.oschina.net/jingzhe/blog/157178

你可能感兴趣的文章
MySQL主主
查看>>
linux的权限管理以及特殊权限SUID,SGID,Sticky
查看>>
大数据测试之初识Hadoop2
查看>>
linux安装nginx
查看>>
ant 之传参数
查看>>
翻转单词顺序与左旋转字符串
查看>>
在Zf2中实现Controller按照URL自动注册
查看>>
批处理的变量引用
查看>>
oracle ORACLE_SID使用上的意义
查看>>
RHEL5下安装Xen
查看>>
2011百度之星初赛B圆环
查看>>
canvas绘制时钟
查看>>
apache配置网络驱动器
查看>>
小型企业网站的架构 & 安全配置与防护
查看>>
mysql模糊查询的优化方法--亲自实践
查看>>
Exchange Server 2013 规划系列之日志容量规划、数据库容量规划
查看>>
职场必读的经典励志故事
查看>>
九爷带你了解 nginx 日志配置指令详解
查看>>
Jenkins 自动化部署上线
查看>>
unittest框架执行用例
查看>>