将 CFStringRef 转换为 QString

Jas*_*enX 1 macos qt cfstring

跨平台 C++ 头文件。为每个平台创建单独的 C++ 文件:windows、linux、mac。处理枚举窗口的平台特定实现。

在 mac 端:我填充了一个 CFStringRef。头文件定义了一个 QString 对象。我需要将 CFStringRef 的内容传递给 QString。

如何做到这一点?

Fra*_*eld 5

这是 Qt 内部使用的静态函数(来自 src/corelib/kernel/qcore_mac.cpp):

QString QCFString::toQString(CFStringRef str)
{
    if (!str)
        return QString();

    CFIndex length = CFStringGetLength(str);
    if (length == 0)
        return QString();

    QString string(length, Qt::Uninitialized);
    CFStringGetCharacters(str, CFRangeMake(0, length), reinterpret_cast<UniChar *> 
        (const_cast<QChar *>(string.unicode())));
    return string;
}
Run Code Online (Sandbox Code Playgroud)

更新(2020 年):现在使用QString::fromCFString()作为@ehopperdietzel 在他的回答中建议的。