나는 서브 클래스의 QTextDocument이 QTextDocument::loadResource(int type, const QUrl &name)
을 오버라이드합니다.클론 QTextDocument 서브 클래스
복제하고 싶습니다.
아이디어가 있으십니까?
나는 서브 클래스의 QTextDocument이 QTextDocument::loadResource(int type, const QUrl &name)
을 오버라이드합니다.클론 QTextDocument 서브 클래스
복제하고 싶습니다.
아이디어가 있으십니까?
QTextDocument::clone
은 사용할 수 없습니다. 가상이 아니기 때문에 다시 구현할 수도 없습니다. 다른 복제 방법을 작성해야합니다 (이름을 clone
으로 지정할 수 있지만 혼동을 피하기 위해 다른 이름을 지정합니다). 복제는 직접 구현해야합니다. 당신은 한 물체에서 다른 물체로 콘텐츠를 복사 할 toHtml
및 setHtml
를 사용할 수 있습니다 복사해야하지만 다른 많은 특성
MyTextDocument* MyTextDocument::my_clone(QObject * parent = 0) {
MyTextDocument* other = new MyTextDocument(parent);
other->setHtml(toHtml());
return other;
}
있다. QTextDocument::clone
방법을 구현하는 방법을 알아보십시오 :
QTextDocument *QTextDocument::clone(QObject *parent) const
{
Q_D(const QTextDocument);
QTextDocument *doc = new QTextDocument(parent);
QTextCursor(doc).insertFragment(QTextDocumentFragment(this));
doc->rootFrame()->setFrameFormat(rootFrame()->frameFormat());
QTextDocumentPrivate *priv = doc->d_func();
priv->title = d->title;
priv->url = d->url;
priv->pageSize = d->pageSize;
priv->indentWidth = d->indentWidth;
priv->defaultTextOption = d->defaultTextOption;
priv->setDefaultFont(d->defaultFont());
priv->resources = d->resources;
priv->cachedResources.clear();
#ifndef QT_NO_CSSPARSER
priv->defaultStyleSheet = d->defaultStyleSheet;
priv->parsedDefaultStyleSheet = d->parsedDefaultStyleSheet;
#endif
return doc;
}
이러한 속성이 당신에게 중요하다면, 당신은 당신의 my_clone
구현에 수동으로 복사해야합니다. 내부 용이므로 QTextDocumentPrivate
클래스를 사용할 수 있습니다. 따라서 기본 구현을 복사 할 수 없습니다. 그러나 API에 나열된 각 속성을 설정하는 일반적인 방법이 있습니다.
앞으로의 호환성 문제를 알고 있어야합니다. 새 Qt 버전에 새 속성이 표시되면 구현시 기본값 인 clone
구현과 반대로 복사되지 않습니다. 이는 문제가 될 수 있으므로이 방법이 완벽하지는 않습니다.