如何解决error: call to deleted constructor of QTableWidget

QT开发遇到的问题
系统报错:error:call to deleted constructor of QTableWidget
QTableWidget.h:353:20 Note:QTableWidget has been explicitly marked deleted here.
该如何解决?

该回答引用ChatGPT

这个错误通常是由于使用了已被删除的构造函数导致的,具体来说可能是您尝试使用了 QTableWidget 的已删除默认构造函数,而该函数已经在 QTableWidget.h 文件的第353行中被标记为已删除。

为了解决这个问题,您可以考虑使用其他可用的构造函数来创建 QTableWidget 对象,如带参数的构造函数,例如:

QTableWidget(int rows, int columns, QWidget *parent = nullptr)

这个构造函数可以指定表格的行和列数,并且还可以传递一个父对象指针作为可选参数。

以下是一个使用上述构造函数创建 QTableWidget 对象的示例:

QTableWidget* tableWidget = new QTableWidget(5, 3, this); // 创建一个53列的表格,将其父对象设置为当前窗口

如果您仍然遇到类似的问题,可以检查您的代码,确保您没有意外地尝试使用已删除的构造函数或其他已被标记为已删除的成员函数。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个错误提示说明QTableWidget的构造函数被标记为删除,因此无法调用。可能是由于该类使用了C++11特性中的“移动语义”,因此不能直接调用默认构造函数。

为了解决这个问题,可以尝试使用new关键字手动分配QTableWidget对象,并在必要时传递参数。例如,可以使用以下代码:

QTableWidget* tableWidget = new QTableWidget(rows, columns, parent);


在使用完后,记得释放内存:

delete tableWidget;


或者,如果您的目的是在GUI中使用QTableWidget,可以考虑在Qt Designer中创建一个QTableWidget小部件,并在代码中使用ui->指针访问它。这将自动创建一个QTableWidget对象,并使用指针进行访问,而不需要手动分配或释放内存。