QT6 源(91)篇一:阅读与注释万能共用体类 QVariant,其并没有父类,全局函qvariant_cast<T>()、本类支持 <<、>>运算符、可直接用 c 语言字符串来构造本类对象

(1)之所以学习此类,当然是因为此类重要。也因最近开始学习的组合框的成员函数,开始引用此类。全局函qvariant_cast():

在这里插入图片描述

++依据如下

template<typename T>
inline T qvariant_cast(const QVariant & v)
{
    QMetaType targetType = QMetaType::fromType<T>();

    if (v.d.type() == targetType)
        return v.d.get<T>();

    if constexpr (std::is_same_v<T,
                                 std::remove_const_t<std::remove_pointer_t<T>> const *>)
    {
        using nonConstT = std::remove_const_t<std::remove_pointer_t<T>> *;

        QMetaType nonConstTargetType = QMetaType::fromType<nonConstT>();

        if (v.d.type() == nonConstTargetType)
            return v.d.get<nonConstT>();
    }

    T t{}; //定义一个空值,填充后返回
    QMetaType::convert(v.metaType(), v.constData(), targetType, & t);
    return t;
}

template<>  //模板特化
inline QVariant qvariant_cast<QVariant>(const QVariant & v)
{
    if (v.metaType().id() == QMetaType::QVariant)
        return * reinterpret_cast<const QVariant *>(v.constData());

    return v;
}

(2) 本 QVariant类支持对数据流的输入输出

在这里插入图片描述

(3) 直接拿 c 语言字符串来构造本类对象

在这里插入图片描述

(4)

谢谢

D:\Documents\ee\mainwindow.cpp:87: error: C2678: 二进制“<<”: 没有找到接受“QList<QVariant>”型的左操作数的运算符(没有可接受的转换) ..\..\mainwindow.cpp(87): error C2678: 二进制“<<”: 没有找到接受“QList<QVariant>”型的左操作数的运算符(没有可接受的转换) C:\Qt\6.8.3\msvc2022_64\include\QtCore/qlist.h(723): note: 可能是“QList<QVariant> &QList<QVariant>::operator <<(QVariant &&)” ..\..\mainwindow.cpp(87): note: “QList<QVariant> &QList<QVariant>::operator <<(QVariant &&): 无法将参数 2 从“long”转换为“QVariant &&” ..\..\mainwindow.cpp(88): note: 原因如下: 无法从“long”转换为“T” with [ T=QVariant ] ..\..\mainwindow.cpp(88): note:QVariant::QVariant: 对重载数的调用不明确 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(260): note: 可能是“QVariant::QVariant(float) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(259): note: 或 “QVariant::QVariant(double) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(258): note: 或 “QVariant::QVariant(bool) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(257): note: 或 “QVariant::QVariant(qulonglong) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(256): note: 或 “QVariant::QVariant(qlonglong) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(255): note: 或 “QVariant::QVariant(uint) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(254): note: 或 “QVariant::QVariant(int) noexcept” ..\..\mainwindow.cpp(88): note: 尝试匹配参数列表“(long)”时 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qlist.h(719): note: 或 “QList<QVariant> &QList<QVariant>::operator <<(QList<QVariant> &&)” ..\..\mainwindow.cpp(87): note: “QList<QVariant> &QList<QVariant>::operator <<(QList<QVariant> &&): 无法将参数 2 从“long”转换为“QList<QVariant> &&” ..\..\mainwindow.cpp(88): note: 原因如下: 无法从“long”转换为“QList<QVariant>” ..\..\mainwindow.cpp(88): note: class“QList<QVariant>”的构造数声明为“explicit” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qlist.h(717): note: 或 “QList<QVariant> &QList<QVariant>::operator <<(const QList<QVariant> &)” ..\..\mainwindow.cpp(87): note: “QList<QVariant> &QList<QVariant>::operator <<(const QList<QVariant> &): 无法将参数 2 从“long”转换为“const QList<QVariant> &” ..\..\mainwindow.cpp(88): note: 原因如下: 无法从“long”转换为“const QList<QVariant>” ..\..\mainwindow.cpp(88): note: class“QList<QVariant>”的构造数声明为“explicit” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qlist.h(715): note: 或 “QList<QVariant> &QList<QVariant>::operator <<(const QVariant &)” ..\..\mainwindow.cpp(87): note: “QList<QVariant> &QList<QVariant>::operator <<(const QVariant &): 无法将参数 2 从“long”转换为“const QVariant &” ..\..\mainwindow.cpp(88): note: 原因如下: 无法从“long”转换为“const T” with [ T=QVariant ] ..\..\mainwindow.cpp(88): note:QVariant::QVariant: 对重载数的调用不明确 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(260): note: 可能是“QVariant::QVariant(float) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(259): note: 或 “QVariant::QVariant(double) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(258): note: 或 “QVariant::QVariant(bool) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(257): note: 或 “QVariant::QVariant(qulonglong) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(256): note: 或 “QVariant::QVariant(qlonglong) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(255): note: 或 “QVariant::QVariant(uint) noexcept” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(254): note: 或 “QVariant::QVariant(int) noexcept” ..\..\mainwindow.cpp(88): note: 尝试匹配参数列表“(long)”时 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qlocale.h(1205): note: 或 “QDebug operator <<(QDebug,const QLocale &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QLocale &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qlocale.h(1200): note: 或 “QDataStream &operator <<(QDataStream &,const QLocale &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QLocale &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qcoreapplication.h(274): note: 或 “QDebug operator <<(QDebug,const MSG &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const MSG &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtAxContainer/qaxbase.h(154): note: 或 “QDataStream &operator <<(QDataStream &,const QAxBase &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QAxBase &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtWidgets/qwidget.h(921): note: 或 “QDebug operator <<(QDebug,const QWidget *)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QWidget *): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qcursor.h(99): note: 或 “QDebug operator <<(QDebug,const QCursor &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QCursor &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qcursor.h(94): note: 或 “QDataStream &operator <<(QDataStream &,const QCursor &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QCursor &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtWidgets/qsizepolicy.h(173): note: 或 “QDebug operator <<(QDebug,const QSizePolicy &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QSizePolicy &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtWidgets/qsizepolicy.h(108): note: 或 “QDataStream &operator <<(QDataStream &,const QSizePolicy &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QSizePolicy &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qfont.h(359): note: 或 “QDebug operator <<(QDebug,const QFont &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QFont &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qfont.h(354): note: 或 “QDataStream &operator <<(QDataStream &,const QFont &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QFont &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qpalette.h(163): note: 或 “QDebug operator <<(QDebug,const QPalette &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QPalette &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qpalette.h(141): note: 或 “QDataStream &operator <<(QDataStream &,const QPalette &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QPalette &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qbrush.h(109): note: 或 “QDebug operator <<(QDebug,const QBrush &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QBrush &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qbrush.h(104): note: 或 “QDataStream &operator <<(QDataStream &,const QBrush &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QBrush &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qaction.h(242): note: 或 “QDebug operator <<(QDebug,const QAction *)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QAction *): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(814): note: 或 “QDebug operator <<(QDebug,const QVariant::Type)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QVariant::Type): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(734): note: 或 “QDataStream &operator <<(QDataStream &,const QVariant::Type)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QVariant::Type): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(720): note: 或 “QDataStream &operator <<(QDataStream &,const QVariant &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QVariant &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(574): note: 或 “QDebug operator <<(QDebug,QKeyCombination)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,QKeyCombination): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qtextstream.h(212): note: 或 “QTextStream &operator <<(QTextStream &,QTextStreamManipulator)” ..\..\mainwindow.cpp(87): note:QTextStream &operator <<(QTextStream &,QTextStreamManipulator): 无法将参数 1 从“QList<QVariant>”转换为“QTextStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qtextstream.h(209): note: 或 “QTextStream &operator <<(QTextStream &,QTextStreamFunction)” ..\..\mainwindow.cpp(87): note:QTextStream &operator <<(QTextStream &,QTextStreamFunction): 无法将参数 1 从“QList<QVariant>”转换为“QTextStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qicon.h(277): note: 或 “QDebug operator <<(QDebug,const QIcon &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QIcon &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qicon.h(260): note: 或 “QDataStream &operator <<(QDataStream &,const QIcon &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QIcon &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qpixmap.h(180): note: 或 “QDebug operator <<(QDebug,const QPixmap &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QPixmap &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qpixmap.h(175): note: 或 “QDataStream &operator <<(QDataStream &,const QPixmap &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QPixmap &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qimage.h(340): note: 或 “QDebug operator <<(QDebug,const QImage &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QImage &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qimage.h(335): note: 或 “QDataStream &operator <<(QDataStream &,const QImage &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QImage &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qtransform.h(328): note: 或 “QDebug operator <<(QDebug,const QTransform &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QTransform &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qtransform.h(323): note: 或 “QDataStream &operator <<(QDataStream &,const QTransform &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QTransform &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qline.h(427): note: 或 “QDataStream &operator <<(QDataStream &,const QLineF &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QLineF &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qline.h(423): note: 或 “QDebug operator <<(QDebug,const QLineF &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QLineF &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qline.h(184): note: 或 “QDataStream &operator <<(QDataStream &,const QLine &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QLine &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qline.h(180): note: 或 “QDebug operator <<(QDebug,const QLine &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QLine &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qregion.h(143): note: 或 “QDebug operator <<(QDebug,const QRegion &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QRegion &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qregion.h(109): note: 或 “QDataStream &operator <<(QDataStream &,const QRegion &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QRegion &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qpolygon.h(140): note: 或 “QDataStream &operator <<(QDataStream &,const QPolygonF &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QPolygonF &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qpolygon.h(133): note: 或 “QDebug operator <<(QDebug,const QPolygonF &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QPolygonF &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qpolygon.h(73): note: 或 “QDataStream &operator <<(QDataStream &,const QPolygon &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QPolygon &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qpolygon.h(66): note: 或 “QDebug operator <<(QDebug,const QPolygon &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QPolygon &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qcolor.h(26): note: 或 “QDataStream &operator <<(QDataStream &,const QColor &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QColor &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qcolor.h(23): note: 或 “QDebug operator <<(QDebug,const QColor &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QColor &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qrect.h(914): note: 或 “QDebug operator <<(QDebug,const QRectF &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QRectF &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qrect.h(626): note: 或 “QDataStream &operator <<(QDataStream &,const QRectF &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QRectF &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qrect.h(479): note: 或 “QDebug operator <<(QDebug,const QRect &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QRect &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qrect.h(147): note: 或 “QDataStream &operator <<(QDataStream &,const QRect &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QRect &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qpoint.h(410): note: 或 “QDebug operator <<(QDebug,const QPointF &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QPointF &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qpoint.h(319): note: 或 “QDataStream &operator <<(QDataStream &,const QPointF &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QPointF &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qpoint.h(208): note: 或 “QDebug operator <<(QDebug,const QPoint &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QPoint &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qpoint.h(113): note: 或 “QDataStream &operator <<(QDataStream &,const QPoint &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QPoint &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qsize.h(409): note: 或 “QDebug operator <<(QDebug,const QSizeF &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QSizeF &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qsize.h(308): note: 或 “QDataStream &operator <<(QDataStream &,const QSizeF &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QSizeF &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qsize.h(203): note: 或 “QDebug operator <<(QDebug,const QSize &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QSize &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qsize.h(108): note: 或 “QDataStream &operator <<(QDataStream &,const QSize &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QSize &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtGui/qkeysequence.h(190): note: 或 “QDebug operator <<(QDebug,const QKeySequence &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QKeySequence &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtGui/qkeysequence.h(21): note: 或 “QDataStream &operator <<(QDataStream &,const QKeySequence &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QKeySequence &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qmargins.h(513): note: 或 “QDebug operator <<(QDebug,const QMarginsF &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QMarginsF &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qmargins.h(357): note: 或 “QDataStream &operator <<(QDataStream &,const QMarginsF &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QMarginsF &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qmargins.h(262): note: 或 “QDebug operator <<(QDebug,const QMargins &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QMargins &): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qmargins.h(90): note: 或 “QDataStream &operator <<(QDataStream &,const QMargins &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QMargins &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qobject.h(479): note: 或 “QDebug operator <<(QDebug,const QObject *)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QObject *): 无法将参数 1 从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(682): note: 或 “QDataStream &operator <<(QDataStream &,QKeyCombination)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,QKeyCombination): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qstring.h(1492): note: 或 “QDataStream &operator <<(QDataStream &,const QString &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QString &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qbytearray.h(725): note: 或 “QDataStream &operator <<(QDataStream &,const QByteArray &)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,const QByteArray &): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qchar.h(636): note: 或 “QDataStream &operator <<(QDataStream &,QChar)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,QChar): 无法将参数 1 从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(567): note: 或 “QDebug operator <<(QDebug,const QFlags<Enum> &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QFlags<Enum> &): 无法从“long”推导出“const QFlags<Enum> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(531): note: 或 “QDebug operator <<(QDebug,T)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,T): 无法推导“A”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(527): note: "type": 不是 "std::enable_if<false,void>" 的成员 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\xtr1common(48): note: 参见“std::enable_if<false,void>”的声明 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(527): note: 语法错误: 缺少“>”(在标识符“type”的前面) C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(519): note: 或 “std::enable_if<QtPrivate::IsQEnumHelper<T>::Value,QDebug>::type operator <<(QDebug,T)” ..\..\mainwindow.cpp(87): note: “初始化”: 无法从“QList<QVariant>”转换为“QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(483): note: 或 “QDebug operator <<(QDebug,const QTaggedPointer<T,Tag> &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QTaggedPointer<T,Tag> &): 无法从“long”推导出“const QTaggedPointer<T,Tag> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(473): note: 或 “QDebug operator <<(QDebug,const QSharedPointer<T> &)” ..\..\mainwindow.cpp(87): note: “QDebug operator <<(QDebug,const QSharedPointer<T> &): 无法从“long”推导出“const QSharedPointer<T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(417): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const QContiguousCache<T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const QContiguousCache<T> &): 无法从“long”推导出“const QContiguousCache<T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(411): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QSet<T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QSet<T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QSet<T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QSet<T> &): 无法从“long”推导出“const QSet<T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(403): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::pair<_Ty1,_Ty2> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::pair<_Ty1,_Ty2> &): 无法从“long”推导出“const std::pair<_Ty1,_Ty2> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(393): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::optional<_Ty> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::optional<_Ty> &): 无法从“long”推导出“const std::optional<_Ty> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(387): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMultiHash<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,std::disjunction<std::is_base_of<QMultiHash<Key,T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QMultiHash<Key,T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMultiHash<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,std::disjunction<std::is_base_of<QMultiHash<Key,T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QMultiHash<Key,T> &): 无法从“long”推导出“const QMultiHash<Key,T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(381): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QHash<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,std::disjunction<std::is_base_of<QHash<Key,T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QHash<Key,T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QHash<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,std::disjunction<std::is_base_of<QHash<Key,T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QHash<Key,T> &): 无法从“long”推导出“const QHash<Key,T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(375): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMultiMap<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,std::disjunction<std::is_base_of<QMultiMap<Key,T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QMultiMap<Key,T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMultiMap<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,std::disjunction<std::is_base_of<QMultiMap<Key,T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QMultiMap<Key,T> &): 无法从“long”推导出“const QMultiMap<Key,T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(369): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMap<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,std::disjunction<std::is_base_of<QMap<Key,T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QMap<Key,T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMap<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,std::disjunction<std::is_base_of<QMap<Key,T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QMap<Key,T> &): 无法从“long”推导出“const QMap<Key,T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(363): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::multimap<_Kty,_Ty,_Pr,_Alloc> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::multimap<_Kty,_Ty,_Pr,_Alloc> &): 无法从“long”推导出“const std::multimap<_Kty,_Ty,_Pr,_Alloc> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(357): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::map<_Kty,_Ty,_Pr,_Alloc> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>,QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::map<_Kty,_Ty,_Pr,_Alloc> &): 无法从“long”推导出“const std::map<_Kty,_Ty,_Pr,_Alloc> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(351): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,std::initializer_list<_Elem>)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,std::initializer_list<_Elem>): 无法从“long”推导出“std::initializer_list<_Elem>”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(345): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::list<_Ty,_Alloc> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::list<_Ty,_Alloc> &): 无法从“long”推导出“const std::list<_Ty,_Alloc> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(339): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::vector<_Ty,_Alloc> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const std::vector<_Ty,_Alloc> &): 无法从“long”推导出“const std::vector<_Ty,_Alloc> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(333): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const QVarLengthArray<T,Prealloc> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDebug,T,void>>,QDebug>::type operator <<(QDebug,const QVarLengthArray<T,Prealloc> &): 无法从“long”推导出“const QVarLengthArray<T,Prealloc> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdebug.h(327): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QList<T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QList<T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QList<T>,T>,QTypeTraits::has_ostream_operator<QDebug,T,void>>>,QDebug>::type operator <<(QDebug,const QList<T> &): 无法从“long”推导出“const QList<T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(622): note: 或 “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDataStream,T,void>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,QDataStream&>::type operator <<(QDataStream &,const std::pair<_Ty1,_Ty2> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<QTypeTraits::has_ostream_operator<QDataStream,T,void>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,QDataStream&>::type operator <<(QDataStream &,const std::pair<_Ty1,_Ty2> &): 无法从“long”推导出“const std::pair<_Ty1,_Ty2> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(609): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMultiMap<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,std::disjunction<std::is_base_of<QMultiMap<Key,T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QMultiMap<Key,T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMultiMap<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,std::disjunction<std::is_base_of<QMultiMap<Key,T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QMultiMap<Key,T> &): 无法从“long”推导出“const QMultiMap<Key,T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(597): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMap<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,std::disjunction<std::is_base_of<QMap<Key,T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QMap<Key,T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMap<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,std::disjunction<std::is_base_of<QMap<Key,T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QMap<Key,T> &): 无法从“long”推导出“const QMap<Key,T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(585): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMultiHash<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,std::disjunction<std::is_base_of<QMultiHash<Key,T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QMultiHash<Key,T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QMultiHash<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,std::disjunction<std::is_base_of<QMultiHash<Key,T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QMultiHash<Key,T> &): 无法从“long”推导出“const QMultiHash<Key,T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(573): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QHash<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,std::disjunction<std::is_base_of<QHash<Key,T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QHash<Key,T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QHash<Key,T>,Key>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>,std::disjunction<std::is_base_of<QHash<Key,T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QHash<Key,T> &): 无法从“long”推导出“const QHash<Key,T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(560): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QSet<T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QSet<T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QSet<T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QSet<T> &): 无法从“long”推导出“const QSet<T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(548): note: 或 “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QList<T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QList<T> &)” ..\..\mainwindow.cpp(87): note: “enable_if<std::conjunction_v<std::disjunction<std::is_base_of<QList<T>,T>,QTypeTraits::has_ostream_operator<QDataStream,T,void>>>,QDataStream&>::type operator <<(QDataStream &,const QList<T> &): 无法从“long”推导出“const QList<T> &”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(531): note: 或 “enable_if<std::is_enum<_Ty>::value,QDataStream&>::type operator <<(QDataStream &,const T &)” ..\..\mainwindow.cpp(87): note: “初始化”: 无法从“QList<QVariant>”转换为“QDataStream &” C:\Qt\6.8.3\msvc2022_64\include\QtCore/qdatastream.h(517): note: 或 “QDataStream &operator <<(QDataStream &,QFlags<Enum>)” ..\..\mainwindow.cpp(87): note: “QDataStream &operator <<(QDataStream &,QFlags<Enum>): 无法从“long”推导出“QFlags<Enum>”的 模板 参数 C:\Qt\6.8.3\msvc2022_64\include\QtCore/qvariant.h(623): note: 或 “enable_if<std::is_same_v<T,QVariant>,QDebug>::type operator <<(const QDebug &,const T &)” ..\..\mainwindow.cpp(87): note: “初始化”: 无法从“QList<QVariant>”转换为“const QDebug &” ..\..\mainwindow.cpp(87): note: 原因如下: 无法从“QList<QVariant>”转换为“const QDebug” ..\..\mainwindow.cpp(87): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 ..\..\mainwindow.cpp(87): note: 尝试匹配参数列表“(QList<QVariant>, long)”时
11-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值