⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qmetatype.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#endif    QWriteLocker locker(customTypesLock());    static int currentIdx = User;    int idx = qMetaTypeType_unlocked(normalizedTypeName);    if (!idx) {        idx = currentIdx++;        ct->resize(ct->count() + 1);        QCustomTypeInfo &inf = (*ct)[idx - User];        inf.typeName = normalizedTypeName;        inf.constr = constructor;        inf.destr = destructor;    }    return idx;}/*!    Returns true if the datatype with ID \a type is registered;    otherwise returns false.    \sa type(), typeName(), Type*/bool QMetaType::isRegistered(int type){    if (type >= 0 && type < User) {        // predefined type        return true;    }    QReadLocker locker(customTypesLock());    const QVector<QCustomTypeInfo> * const ct = customTypes();    return ((type >= User) && (ct && ct->count() > type - User));}/*!    Returns a handle to the type called \a typeName, or 0 if there is    no such type.    \sa isRegistered(), typeName(), Type*/int QMetaType::type(const char *typeName){#ifdef QT_NO_QOBJECT    const ::QByteArray normalizedTypeName = typeName;#else    const ::QByteArray normalizedTypeName = QMetaObject::normalizedType(typeName);#endif    QReadLocker locker(customTypesLock());    return qMetaTypeType_unlocked(normalizedTypeName);}#ifndef QT_NO_DATASTREAM/*!    Writes the object pointed to by \a data with the ID \a type to    the given \a stream. Returns true if the object is saved    successfully; otherwise returns false.    The type must have been registered with qRegisterMetaType() and    qRegisterMetaTypeStreamOperators() beforehand.    Normally, you should not need to call this function directly.    Instead, use QVariant's \c operator<<(), which relies on save()    to stream custom types.    \sa load(), qRegisterMetaTypeStreamOperators()*/bool QMetaType::save(QDataStream &stream, int type, const void *data){    if (!data || !isRegistered(type))        return false;    switch(type) {    case QMetaType::Void:    case QMetaType::VoidStar:    case QMetaType::QObjectStar:    case QMetaType::QWidgetStar:        return false;    case QMetaType::Long:        stream << qlonglong(*static_cast<const long *>(data));        break;    case QMetaType::Int:        stream << *static_cast<const int *>(data);        break;    case QMetaType::Short:        stream << *static_cast<const short *>(data);        break;    case QMetaType::Char:        // force a char to be signed        stream << *static_cast<const signed char *>(data);        break;    case QMetaType::ULong:        stream << qulonglong(*static_cast<const ulong *>(data));        break;    case QMetaType::UInt:        stream << *static_cast<const uint *>(data);        break;    case QMetaType::LongLong:        stream << *static_cast<const qlonglong *>(data);        break;    case QMetaType::ULongLong:        stream << *static_cast<const qulonglong *>(data);        break;    case QMetaType::UShort:        stream << *static_cast<const ushort *>(data);        break;    case QMetaType::UChar:        stream << *static_cast<const uchar *>(data);        break;    case QMetaType::Bool:        stream << qint8(*static_cast<const bool *>(data));        break;    case QMetaType::Float:        stream << *static_cast<const float *>(data);        break;    case QMetaType::Double:        stream << *static_cast<const double *>(data);        break;    case QMetaType::QChar:        stream << *static_cast<const ::QChar *>(data);        break;#ifndef QT_BOOTSTRAPPED    case QMetaType::QVariantMap:        stream << *static_cast<const ::QVariantMap *>(data);        break;    case QMetaType::QVariantList:        stream << *static_cast<const ::QVariantList *>(data);        break;#endif    case QMetaType::QByteArray:        stream << *static_cast<const ::QByteArray *>(data);        break;    case QMetaType::QString:        stream << *static_cast<const ::QString *>(data);        break;    case QMetaType::QStringList:        stream << *static_cast<const ::QStringList *>(data);        break;#ifndef QT_BOOTSTRAPPED    case QMetaType::QBitArray:        stream << *static_cast<const ::QBitArray *>(data);        break;#endif    case QMetaType::QDate:        stream << *static_cast<const ::QDate *>(data);        break;    case QMetaType::QTime:        stream << *static_cast<const ::QTime *>(data);        break;    case QMetaType::QDateTime:        stream << *static_cast<const ::QDateTime *>(data);        break;#ifndef QT_BOOTSTRAPPED    case QMetaType::QUrl:        stream << *static_cast<const ::QUrl *>(data);        break;#endif    case QMetaType::QLocale:        stream << *static_cast<const ::QLocale *>(data);        break;#ifndef QT_NO_GEOM_VARIANT    case QMetaType::QRect:        stream << *static_cast<const ::QRect *>(data);        break;    case QMetaType::QRectF:        stream << *static_cast<const ::QRectF *>(data);        break;    case QMetaType::QSize:        stream << *static_cast<const ::QSize *>(data);        break;    case QMetaType::QSizeF:        stream << *static_cast<const ::QSizeF *>(data);        break;    case QMetaType::QLine:        stream << *static_cast<const ::QLine *>(data);        break;    case QMetaType::QLineF:        stream << *static_cast<const ::QLineF *>(data);        break;    case QMetaType::QPoint:        stream << *static_cast<const ::QPoint *>(data);        break;    case QMetaType::QPointF:        stream << *static_cast<const ::QPointF *>(data);        break;#endif#ifndef QT_NO_REGEXP    case QMetaType::QRegExp:        stream << *static_cast<const ::QRegExp *>(data);        break;#endif#ifdef QT3_SUPPORT    case QMetaType::QColorGroup:#endif    case QMetaType::QFont:    case QMetaType::QPixmap:    case QMetaType::QBrush:    case QMetaType::QColor:    case QMetaType::QPalette:    case QMetaType::QIcon:    case QMetaType::QImage:    case QMetaType::QPolygon:    case QMetaType::QRegion:    case QMetaType::QBitmap:    case QMetaType::QCursor:    case QMetaType::QSizePolicy:    case QMetaType::QKeySequence:    case QMetaType::QPen:    case QMetaType::QTextLength:    case QMetaType::QTextFormat:    case QMetaType::QMatrix:    case QMetaType::QTransform:        if (!qMetaTypeGuiHelper)            return false;        qMetaTypeGuiHelper[type - FirstGuiType].saveOp(stream, data);        break;    default: {        const QVector<QCustomTypeInfo> * const ct = customTypes();        if (!ct)            return false;        SaveOperator saveOp = 0;        {            QReadLocker locker(customTypesLock());            saveOp = ct->at(type - User).saveOp;        }        if (!saveOp)            return false;        saveOp(stream, data);        break; }    }    return true;}/*!    Reads the object of the specified \a type from the given \a    stream into \a data. Returns true if the object is loaded    successfully; otherwise returns false.    The type must have been registered with qRegisterMetaType() and    qRegisterMetaTypeStreamOperators() beforehand.    Normally, you should not need to call this function directly.    Instead, use QVariant's \c operator>>(), which relies on load()    to stream custom types.    \sa save(), qRegisterMetaTypeStreamOperators()*/bool QMetaType::load(QDataStream &stream, int type, void *data){    if (!data || !isRegistered(type))        return false;    switch(type) {    case QMetaType::Void:    case QMetaType::VoidStar:    case QMetaType::QObjectStar:    case QMetaType::QWidgetStar:        return false;    case QMetaType::Long: {        qlonglong l;        stream >> l;        *static_cast<long *>(data) = long(l);        break; }    case QMetaType::Int:        stream >> *static_cast<int *>(data);        break;    case QMetaType::Short:        stream >> *static_cast<short *>(data);        break;    case QMetaType::Char:        // force a char to be signed        stream >> *static_cast<signed char *>(data);        break;    case QMetaType::ULong: {        qulonglong ul;        stream >> ul;        *static_cast<ulong *>(data) = ulong(ul);        break; }    case QMetaType::UInt:        stream >> *static_cast<uint *>(data);        break;    case QMetaType::LongLong:        stream >> *static_cast<qlonglong *>(data);        break;    case QMetaType::ULongLong:        stream >> *static_cast<qulonglong *>(data);        break;    case QMetaType::UShort:        stream >> *static_cast<ushort *>(data);        break;    case QMetaType::UChar:        stream >> *static_cast<uchar *>(data);        break;    case QMetaType::Bool: {        qint8 b;        stream >> b;        *static_cast<bool *>(data) = b;        break; }    case QMetaType::Float:        stream >> *static_cast<float *>(data);        break;    case QMetaType::Double:        stream >> *static_cast<double *>(data);        break;    case QMetaType::QChar:        stream >> *static_cast< ::QChar *>(data);        break;#ifndef QT_BOOTSTRAPPED    case QMetaType::QVariantMap:        stream >> *static_cast< ::QVariantMap *>(data);        break;    case QMetaType::QVariantList:        stream >> *static_cast< ::QVariantList *>(data);        break;#endif    case QMetaType::QByteArray:        stream >> *static_cast< ::QByteArray *>(data);        break;    case QMetaType::QString:        stream >> *static_cast< ::QString *>(data);        break;    case QMetaType::QStringList:        stream >> *static_cast< ::QStringList *>(data);        break;#ifndef QT_BOOTSTRAPPED    case QMetaType::QBitArray:        stream >> *static_cast< ::QBitArray *>(data);        break;#endif    case QMetaType::QDate:        stream >> *static_cast< ::QDate *>(data);        break;    case QMetaType::QTime:        stream >> *static_cast< ::QTime *>(data);        break;    case QMetaType::QDateTime:        stream >> *static_cast< ::QDateTime *>(data);        break;#ifndef QT_BOOTSTRAPPED    case QMetaType::QUrl:        stream >> *static_cast< ::QUrl *>(data);        break;#endif    case QMetaType::QLocale:        stream >> *static_cast< ::QLocale *>(data);        break;#ifndef QT_NO_GEOM_VARIANT    case QMetaType::QRect:        stream >> *static_cast< ::QRect *>(data);        break;    case QMetaType::QRectF:        stream >> *static_cast< ::QRectF *>(data);        break;    case QMetaType::QSize:        stream >> *static_cast< ::QSize *>(data);        break;    case QMetaType::QSizeF:        stream >> *static_cast< ::QSizeF *>(data);        break;    case QMetaType::QLine:        stream >> *static_cast< ::QLine *>(data);        break;    case QMetaType::QLineF:        stream >> *static_cast< ::QLineF *>(data);        break;    case QMetaType::QPoint:        stream >> *static_cast< ::QPoint *>(data);        break;    case QMetaType::QPointF:        stream >> *static_cast< ::QPointF *>(data);        break;#endif#ifndef QT_NO_REGEXP    case QMetaType::QRegExp:        stream >> *static_cast< ::QRegExp *>(data);        break;#endif#ifdef QT3_SUPPORT    case QMetaType::QColorGroup:#endif    case QMetaType::QFont:    case QMetaType::QPixmap:    case QMetaType::QBrush:    case QMetaType::QColor:    case QMetaType::QPalette:    case QMetaType::QIcon:    case QMetaType::QImage:    case QMetaType::QPolygon:    case QMetaType::QRegion:    case QMetaType::QBitmap:    case QMetaType::QCursor:    case QMetaType::QSizePolicy:    case QMetaType::QKeySequence:    case QMetaType::QPen:    case QMetaType::QTextLength:    case QMetaType::QTextFormat:    case QMetaType::QMatrix:    case QMetaType::QTransform:        if (!qMetaTypeGuiHelper)            return false;        qMetaTypeGuiHelper[type - FirstGuiType].loadOp(stream, data);        break;    default: {        const QVector<QCustomTypeInfo> * const ct = customTypes();        if (!ct)            return false;        LoadOperator loadOp = 0;        {            QReadLocker locker(customTypesLock());            loadOp = ct->at(type - User).loadOp;        }        if (!loadOp)            return false;        loadOp(stream, data);        break; }    }    return true;}#endif/*!    Returns a copy of \a copy, assuming it is of type \a type. If \a    copy is zero, creates a default type.    \sa destroy(), isRegistered(), Type*/void *QMetaType::construct(int type, const void *copy){    if (copy) {        switch(type) {        case QMetaType::VoidStar:        case QMetaType::QObjectStar:        case QMetaType::QWidgetStar:            return new void *(*static_cast<void* const *>(copy));        case QMetaType::Long:            return new long(*static_cast<const long*>(copy));        case QMetaType::Int:            return new int(*static_cast<const int*>(copy));        case QMetaType::Short:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -