问题描述:
有道云笔记的内容的标题可以粘贴到应用,但正文不行
修改方法:
修改文件:
/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();
}