有道云笔记的复制内容不能粘贴到Qt编的app

本文介绍了如何解决有道云笔记正文内容无法粘贴到使用Qt开发的应用程序中的问题,主要涉及到Qt源码的修改,包括在`qmacmime.mm`文件中针对`public.plain-text`格式的处理。通过添加特定的判断和转换,实现了内容的正常粘贴。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
有道云笔记的内容的标题可以粘贴到应用,但正文不行

修改方法:
    修改文件:
/Users/nmlhm/Qt5.9.2/5.9.2/Src/qtbase/src/platformsupport/clipboard/qmacmime.mm 

对应函数修改后内容:(添加判断 || flav == QLatin1String("public.plain-text"); 有道正文内容格式是public.plain-text
QString QMacPasteboardMimePlainTextFallback::mimeFor(QString flav)
{
    if (flav == QLatin1String("public.text") || flav == QLatin1String("public.plain-text"))
        return QLatin1String("text/plain");
    return QString();
}

bool QMacPasteboardMimePlainTextFallback::canConvert(const QString &mime, QString flav)
{
    return mime == mimeFor(flav);
}

QVariant QMacPasteboardMimePlainTextFallback::convertToMime(const QString &mimetype, QList<QByteArray> data, QString flavor)
{
    if (data.count() > 1)
        qWarning("QMacPasteboardMimePlainTextFallback: Cannot handle multiple member data");

    if (flavor == QLatin1String("public.text") || flavor == QLatin1String("public.plain-text")) {
        // Note that public.text is documented by Apple to have an undefined encoding. From
        // testing it seems that utf8 is normally used, at least by Safari on iOS.
        const QByteArray &firstData = data.first();
        return QString(QCFString(CFStringCreateWithBytes(kCFAllocatorDefault,
                                             reinterpret_cast<const UInt8 *>(firstData.constData()),
                                             firstData.size(), kCFStringEncodingUTF8, false)));
    } else {
        qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
    }
    return QVariant();
}


qt5.9.4时代码有变动,修改mimeFor函数即可:
原函数:
QString QMacPasteboardMimeAny::mimeFor(QString flav)
{
    const QString any_prefix = QLatin1String("com.trolltech.anymime.");
    if (flav.size() > any_prefix.length() && flav.startsWith(any_prefix))
        return flav.mid(any_prefix.length()).replace(QLatin1String("--"), QLatin1String("/"));
    return QString();
}
改动后:
QString QMacPasteboardMimeAny::mimeFor(QString flav)
{
    const QString any_prefix = QLatin1String("com.trolltech.anymime.");
    if (flav.size() > any_prefix.length() && flav.startsWith(any_prefix))
        return flav.mid(any_prefix.length()).replace(QLatin1String("--"), QLatin1String("/"));
    if (flav == QLatin1String("public.text") || flav == QLatin1String("public.plain-text"))//添加的判断
        return QLatin1String("text/plain");
    return QString();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值