小编use*_*776的帖子

Q_DECLARE_METATYPE根本不起作用

我正在尝试在QAbstractListModel中使用自定义类,而Q_DECLARE_METATYPE根本不起作用!

为了测试问题所在,我将代码简化如下:

#include <QMetaType>
#include <QVariant>
#include <QDebug>

typedef int x;
Q_DECLARE_METATYPE(x)

void main() {
    QVariant v;
    qDebug() << v.canConvert<x>();
}
Run Code Online (Sandbox Code Playgroud)

输出仍然是假的!

顺便说一句,我想实现的代码是:

namespace ns{
    class a {
        public:
            a();    //default constructor
            a(const a&);    //copy constructor
            ~a();
    }
}
Q_DECALRE_METATYPE(ns::a);
Run Code Online (Sandbox Code Playgroud)

当我尝试重新实现QAbstractListModel :: data时:

QList<ns::s> list;    //this is actually a member field of the custom model.
QVariant MyListModel::data(const QModelIndex& index, int role) const {      
    Q_UNUSED(role)
    return list.at(index.row());        
}
Run Code Online (Sandbox Code Playgroud)

编译器将报告和错误,如:

cannot convert const ns::a to QVariant::Type
Run Code Online (Sandbox Code Playgroud)

qt

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

qt ×1