代码之家  ›  专栏  ›  技术社区  ›  Anon

如何在Qt6中解包QStringList,使其不转换为“QList<QString>”?

  •  0
  • Anon  · 技术社区  · 3 年前

    我在Qt5中使用此功能已经有很长一段时间了:

    static QString demangle( const QString &name )
    {
        int status;
        std::unique_ptr< char, void(*)( void* ) > res (
            abi::__cxa_demangle( name.toLatin1(), nullptr, nullptr, &status ), std::free );
        return { ( status == 0 ) ? QLatin1String( res.get() ) : name };
    }
    

    由于开始使用Qt6,

    ct_Halt( demangle(typeid (QStringList).name() ), demangle(typeid (QList<QString>).name() ) );
    

    现在生产

    QString demangle(typeid (QStringList).name() )
    "QList<QString>" // This used to produce QStringList in Qt5
    
    QString demangle(typeid (QList<QString>).name() )
    "QList<QString>"
    

    这个小小的烦恼破坏了我创建的一个图书馆。这没什么大不了的,但我想知道demangle函数是否可以“固定”以准确反映类型名称。

    0 回复  |  直到 3 年前