我正在尝试实现ListView。到目前为止,我已经实现了一个名为PacientModel的类,它继承了QAbstractListModel。
#ifndef PACIENTMODEL_H
#define PACIENTMODEL_H
#include <QAbstractListModel>
class PacientModel : public QAbstractListModel {
Q_OBJECT
public:
enum PacientRole {
CIRole,
NameRole,
LastNameRole
};
Q_ENUM(PacientRole)
PacientModel(QObject * parent = nullptr);
int rowCount(const QModelIndex & = QModelIndex()) const;
QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const;
QHash<int, QByteArray> roleNames() const;
Q_INVOKABLE QVariantMap get(int row) const;
Q_INVOKABLE void append (const QString &CI, const QString &name, const QString &lastName);
Q_INVOKABLE void set (int row, const QString & CI, const QString &name, const QString &lastName);
Q_INVOKABLE void remove (int row);
private:
struct Pacient {
QString CI;
QString name;
QString lastName;
};
QList<Pacient> m_pacients; };
#endif // PACIENTMODEL_H
我也有ListView的实现,但是当我编译代码时,我收到了这个错误。
C:\ Qt \ Qt5.8.0 \ 5.8 \ android_armv7 \ include \ QtCore \ qmetatype.h:765:错误:使用已删除的函数'PacientModel :: PacientModel(const PacientModel&安培)” return new(where)T(* static_cast(t));
我该如何解决这个问题?
答案 0 :(得分:3)
每个this Q&A QAbstractListModel
的复制构造函数被标记为私有。这意味着它不可复制,因此,当您继承它时,您的派生类在默认情况下也不可复制。
如果你想制作你的类的副本,那么你需要为该类手动定义一个复制构造函数,而不是依赖于编译器为你做的(因为它不会)。
答案 1 :(得分:1)
几天之后我发现错误不在类声明中,这是我将数据分配给listview的方式......我正在使用它:
objetoLP->setProperty("modelList", QVariant::fromValue(pacientes));
而不是:
ctxt->setContextProperty("modelList", &pacientes);