Qt表格导出图片

概述: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,

有任何问题请留言讨论。

猜你喜欢

转载自www.cnblogs.com/tianmochou/p/9952628.html