QTableWidget克隆

时间:2018-01-22 13:42:23

标签: c++ qt qtablewidget

我知道QTableWidget没有拷贝构造函数,因为(如果我错了,请纠正我)它基于视图/模型范例。

但是,您可能需要QTableWidget的副本,例如,当您必须在某个功能中执行某种操作而您不想影响该视图时小部件。例如:

  • 您可能希望将表导出到png文件:

    void exportMyTable(const QTableWidget& table){
        ...
        table.grab().save(fileExportFilePath);
    }
    

    ...但grab方法不是常量(我无法理解为什么......),因此您需要先创建本地副本。

  • 您可能希望将其复制到剪贴板或导出到csv,因此您需要在导出之前删除所有单元格跨度并使用临时QTableWidget副本可能有所帮助。

  • ...等...

BTW,解决方法可能是逐个单元格复制所有内容:

void exportMyTable(const QTableWidget& table){
    QTableWidget copyTable;
    copyTable.setRowCount(table.rowCount());
    copyTable.setColumnCount(table.columnCount());
    for (int c = 0; c < table.columnCount(); ++c)   
        for (int r = 0; r < table.rowCount(); ++r)
            copyTable.setSpan(r, c, table.rowSpan(r, c), table.columnSpan(r, c));
    ...
}

但上面的代码在单元格跨度的情况下崩溃,所以我需要复制所有的跨度,然后复制所有的标题等...

那么,回到原始问题,有没有办法以最简单的方式克隆QTableWidget?新对象中的模型和视图。

0 个答案:

没有答案