我知道QTableWidget没有拷贝构造函数,因为(如果我错了,请纠正我)它基于视图/模型范例。
但是,您可能需要QTableWidget
的副本,例如,当您必须在某个功能中执行某种操作而您不想影响该视图时小部件。例如:
您可能希望将表导出到png文件:
void exportMyTable(const QTableWidget& table){
...
table.grab().save(fileExportFilePath);
}
...但grab
方法不是常量(我无法理解为什么......),因此您需要先创建本地副本。
您可能希望将其复制到剪贴板或导出到csv,因此您需要在导出之前删除所有单元格跨度并使用临时QTableWidget
副本可能有所帮助。
...等...
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
?新对象中的模型和视图。