Qt创建一个类并在向量中使用

时间:2016-06-17 09:48:27

标签: c++ qt qtreewidget

我是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

1 个答案:

答案 0 :(得分:2)

ItemQObjectQObject知道没有复制构造函数。为了使用QVector,项目需要有一个复制构造函数。将Item更改为QObject,或使用QSharedPointer但仅在您了解所有权时)。

相关问题