首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QColor不是已注册的元类型吗?

QColor不是已注册的元类型吗?
EN

Stack Overflow用户
提问于 2021-09-20 18:07:20
回答 1查看 87关注 0票数 0

这是问题的后续内容.这篇文章应该解释为什么我要使用quint16来提取变体类型。

我从QVariant派生了类QVariant,并实现了QDataStream读操作符。

这允许构造如下:

代码语言:javascript
复制
MyVariant vt;
str >> vt;

这是流实现:

代码语言:javascript
复制
QDataStream& operator>>(QDataStream& str, MyVariant& vt)
{
    vt.clear();

    quint16 type;
    str >> type;

    const QMetaType vtype(type);
    if (vtype.isValid()) {
        vt.create(type, nullptr);


        if (!QMetaType::load(str, type, const_cast<void *>(vt.constData()))) {
            Q_ASSERT_X(false, "MyVariant", qPrintable(QString("Cannot load type %u").arg(type)));
            str.setStatus(QDataStream::ReadCorruptData);
        }
    }
    else {
        Q_ASSERT_X(false, "MyVariant", qPrintable(QString("Type %1 is not supported").arg(type)));
    }

    return str;
}

当流遇到QColor (67)时,此代码无法为其创建有效的QMetaType。QMetaType::isValid()返回false。

我还能忘记做什么?

不确定是否重要,但我已将QT += gui添加到.pro文件中。

编辑

我补充了..。

代码语言:javascript
复制
int type = qRegisterMetaType<QColor>("QColor");

..。我的主要职责。它返回67,但是当我点击我的流函数时,QMetaType的创建仍然失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-20 21:41:46

好吧,我完全靠运气解决了这件事。

在我的主题栏里,我用.

代码语言:javascript
复制
qRegisterMetaTypeStreamOperators<QColor>("QColor");

现在起作用了!如果我做的对不对,请在评论中告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69259025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档