概述:qt中把某个控件导出保存为图片导出并不复杂,网上也有一堆方法。但是对于tableview中数据很多的情况下势必会出现滚动条,用传统的截屏抓图势会有滚动条,图片数据展示不全。在这我使用了一种折中方法
即:永远不让tableview出现滚动条,而是把tableview放在一个scrollarea里面,当表各种数据过多时,tableview的高度会一直增加,而此时的scrollarea会出现滚动条,这样tableview导出为图片时会显示其所有数据
一、首先看看界面布局
把tableview放在一个scrollarea里面,当向tableview里面添加的数据比较多时,scrollarea的滚动条就会自动出现,当然这个需要代码的控制,再后面会讲到
二、如何控制tableview高度增加
void Dialog::verticalResizeTableViewToContents(QTableView *tableView)
{
int rowTotalHeight=0;
// Rows height
int count=tableView->verticalHeader()->count();
for (int i = 0; i < count; ++i) {
// 2018-03 edit: only account for row if it is visible
if (!tableView->verticalHeader()->isSectionHidden(i)) {
rowTotalHeight+=tableView->verticalHeader()->sectionSize(i);
}
}
// Check for scrollbar visibility
if (!tableView->horizontalScrollBar()->isHidden())
{
rowTotalHeight+=tableView->horizontalScrollBar()->height();
}
// Check for header visibility
if (!tableView->horizontalHeader()->isHidden())
{
rowTotalHeight+=tableView->horizontalHeader()->height();
}
tableView->setMinimumHeight(rowTotalHeight);
}
当向表格里面添加或删除行数据是条用该方法即可合理的控制tableview的高度。
三、运行效果展示
点击insertbutton多添加几行数据。
出现了滚动条,在导出图片
导出的图片并没有滚动条,而是展示了,全部的tableview数据。
详细的代码实例大家可以到https://download.csdn.net/download/soft_123456/10782161,
有任何问题请留言讨论。