все. Извините за мой Engli sh. Я немного знаю Энгли sh. У меня необычная проблема. Я создал AbstractModel, унаследованный от QAbstractTableModel, и MyAdvModel, унаследованный от AbstractModel. Это мой код частично.
// abstactmodel.hpp
#pragma once
#include <QAbstractTableModel>
#include "db/utility.hpp"
#include "net/serverloader.hpp"
class QNetworkReply;
class AbstractModel : public QAbstractTableModel
{
Q_OBJECT
public:
virtual void parseData(QByteArray*) = 0;
enum Error{NoError = 0, Null, NoFound, BadJson, NoServerConnection, Unknown};
explicit AbstractModel(QObject *parent = nullptr);
void setUrl(const QString&);
void clearParams();
void addParam(const QString&, const QVariant&);
void delParam(const QString&);
void post();
void get();
protected:
ServerLoader* server() const;
private slots:
void response(QNetworkReply*);
private:
unique_ptr<ServerLoader> _loader;
unique_ptr<QVariantMap> _params;
};
// myadvmodel.hpp
#pragma once
#include "models/abstractmodel.hpp"
#include <QAbstractTableModel>
#include <tuple>
#include <vector>
#include <map>
class MyAdvModel :public AbstractModel
{
Q_OBJECT
public:
static constexpr auto ID_FIELD = 0;
static constexpr auto TYPE_FIELD = 1;
static constexpr auto ISCLOSED_FIELD = 2;
// static constexpr auto ISARRIVED_FIELD = 3;
static constexpr auto DATA_FIELD = 3;
static constexpr auto STATUS = 0;
static constexpr auto LAST = 6;
static constexpr auto COLUMNS = 7;
enum Type {Driver, Passanger};
qint32 ID, MAX_ID;
// id p/d isc isa datas
using data_t = std::vector<std::tuple<int32_t, Type, bool,/* bool,*/ std::map<QString, QVariant>>>;
explicit MyAdvModel(QObject *parent = nullptr);
~MyAdvModel() override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
bool setData(const QModelIndex &index, const QVariant &value,
int role = Qt::EditRole) override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
Qt::ItemFlags flags(const QModelIndex& index) const override;
private:
std::unique_ptr<data_t> _data, _tmp;
private slots:
void parsed();
public:
void parseData(QByteArray *) override;
};
во время компиляции. Я получаю сообщение об ошибке.
myadvmodel.o: myadvmodel. cpp :(. Text + 0x1225): неопределенная ссылка на> `_imp___ZNK18QAbstractItemModel4dataERK11QModelIndexi 'collect2.exe: ошибка: ld вернул выход 1 mingw32-make: *** [Makefile: 182: up_desktop.exe] Ошибка 1 20:38:38: Процесс «C: \ Qt \ Tools \ mingw730_32 \ bin \ mingw32-make.exe» завершился с кодом 2. Ошибка при сборке / развёртывании проекта up_desktop (комплект: рабочий стол MinGW_32) Во время выполнения этапа «Сборка»
Спасибо всем, кто мне помогает. еще раз извините за мой английский sh.