Клон QTableWidget
Я знаю, что QTableWidget не имеет конструктора копирования, поскольку (поправьте меня, если я ошибаюсь), он основан на парадигме вида / модели.
Но может случиться так, что вам понадобится копия QTableWidget
когда, например, вам нужно выполнить какие-то операции в функции, и вы не хотите влиять на вид в виджете. Например:
Вы можете экспортировать таблицу в png-файл:
void exportMyTable(const QTableWidget& table){ ... table.grab().save(fileExportFilePath); }
...но
grab
Метод не является const (я не могу понять, почему...), поэтому вам нужно создать локальную копию раньше.Возможно, вы захотите скопировать его в буфер обмена или экспортировать в 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
проще всего? И модель, и вид в новом объекте.