gpt4 book ai didi

c++ - Qt 创建一个类并在 vector 中使用

转载 作者:行者123 更新时间:2023-11-28 02:05:00 24 4
gpt4 key购买 nike

我是 Qt 和 C++ 的新手。我想使用一个名为 Item 的类来实现一个 vector 。我想我犯了初学者的错误。我收到以下错误。有人可以帮忙吗?

C:\Qt\Qt5.6.1\5.6\msvc2015_64\include\QtCore\qvector.h:631: error: C2280: 'Item::Item(const Item &)': attempted to reference a deleted function

下面是我的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>

主窗口.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

项目.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

最佳答案

Item 是一个 QObjectQObject 以没有复制构造函数而闻名。为了使用QVector,项目需要有一个复制构造函数。要么将 Item 更改为不是 QObject,要么使用 QSharedPointer(但前提是您了解所有权)。

关于c++ - Qt 创建一个类并在 vector 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37878404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com