我是Qt和C ++的新手。我想使用一个名为Item的类来实现一个向量。我想我做了一个初学者的错误。我收到以下错误。有人可以帮忙吗?
C:\ Qt \ Qt5.6.1 \ 5.6 \ msvc2015_64 \ include \ QtCore \ qvector.h:631:错误:C2280:'项目::项目(const项目&)':尝试引用已删除的功能
下面是我的mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QVector>
#include <QtCore>
#include <QtGui>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
void MainWindow::AddRoot(QString item)
{
QTreeWidgetItem *itm = new QTreeWidgetItem(ui->treeWidget);
itm->setText(0,item);
ui->treeWidget->addTopLevelItem(itm);
}
void MainWindow::AddChild(QTreeWidgetItem *parent,QString item)
{
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
Item item;
item.setDescription(ui->lineEdit->text());
data.push_back(item);
ui->treeWidget->setColumnCount(1);
AddRoot(item.getDescription());
}
我的item.cpp类
#include "item.h"
#include <QtCore>
#include <QtGui>
Item::Item()
{
}
void Item::setDescription(QString desc)
{
Description = desc;
}
void Item::setEnterDate(QDateTime enterDate)
{
EnterDate = enterDate;
}
void Item::setEndDate(QDateTime endDate)
{
EndDate = endDate;
}
QString Item::getDescription()
{
return Description;
}
QDateTime Item::getEnterDate()
{
return EnterDate;
}
QDateTime Item::getEndDate()
{
return EndDate;
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <item.h>
#include <QtGui>
#include <QtCore>
#include <QTreeWidget>
mainwindow.h:
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
QVector<Item> data;
void AddRoot(QString item);
void AddChild(QTreeWidgetItem *parent,QString item);
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
item.h:
#ifndef ITEM_H
#define ITEM_H
#include <QtCore>
#include <QtGui>
class Item : public QObject
{
Q_OBJECT
public:
explicit Item(QObject *parent = 0);
QString Description;
QDateTime EnterDate;
QDateTime EndDate;
QString getDescription();
QDateTime getEnterDate();
QDateTime getEndDate();
void setDescription(QString desc);
void setEnterDate(QDateTime enterDate);
void setEndDate(QDateTime endDate);
};
#endif // ITEM_H
答案 0 :(得分:2)
Item
是QObject
。 QObject
知道没有复制构造函数。为了使用QVector
,项目需要有一个复制构造函数。将Item
更改为QObject
,或使用QSharedPointer
(但仅在您了解所有权时)。