0

我有界面class IHistory。我想实施QAbstractTableModel。我的代码调用undefined reference to vtable错误,它不能通过运行来修复qmake

(ihistory.h)

class IHistory: public QAbstractTableModel
{
    ...
    // QAbstractItemModel interface
public:
    virtual int rowCount(const QModelIndex &parent) const Q_DECL_OVERRIDE ;
    virtual int columnCount(const QModelIndex &parent) const Q_DECL_OVERRIDE ;
    virtual QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE ;
    virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE ;
    ...
};

在孩子班我写(history.h)

class History : public IHistory
{
    //Q_OBJECT
    Q_INTERFACES(IHistory)

public:
    History();
    ~History();

    ...
    // QAbstractItemModel interface
public:
    int rowCount(const QModelIndex &parent) const;
    int columnCount(const QModelIndex &parent) const;
    QVariant data(const QModelIndex &index, int role) const;
    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
    ...
};

有没有正确的方法,或者我应该QAbstractTableModel实施class History

4

1 回答 1

0

我找到了正确的方法!只需删除接口中的重新定义,并添加所有抽象函数的实现history.cpp

所以,类似规则的东西:

如果你想从 QT 中的其他接口继承接口类,就像往常一样:class IFoo: public IBar. 然后,当您实现接口时IFoo

1)从接口继承:class Foo: public IFoo

2) 按Alt + Enter并选择Insert virtual methods of base classes

3)然后,对于每种方法使用Alt + Enter和选择Implement (methodname) in class Foo.cpp

4)利润!

于 2016-02-14T18:09:21.217 回答