本文整理汇总了C++中QWebElement::removeFromDocument方法的典型用法代码示例。如果您正苦于以下问题:C++ QWebElement::removeFromDocument方法的具体用法?C++ QWebElement::removeFromDocument怎么用?C++ QWebElement::removeFromDocument使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QWebElement
的用法示例。
在下文中一共展示了QWebElement::removeFromDocument方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onMessage
void MainWindow::onMessage(IrcPrivateMessage *message) {
auto messages = read.getMessages(message->target());
int messageCount = 150; // Subject to change via settings, currently set as twitch default
PattyIrcMessage* pattyMsg = PattyIrcMessage::fromMessage(message);
messages->append(pattyMsg);
if (message->target() == this->currentChannel) {
QString html;
QWebFrame* frame = this->ui->baseChatWindow->page()->mainFrame();
this->scrollValue = frame->scrollBarValue(Qt::Vertical);
this->autoScroll = (this->scrollValue >= frame->scrollBarMaximum(Qt::Vertical));
if (this->autoScroll) {
while (messages->count() > messageCount) {
delete messages->takeFirst();
QWebElement message = frame->findFirstElement("div.message");
message.removeFromDocument();
}
}
addMessage(pattyMsg);
} else {
if (messages->count() > messageCount) {
delete messages->takeFirst();
}
}
}
示例2: removeMessageLog
void lmcMessageLog::removeMessageLog(QString divClass) {
QWebFrame* frame = page()->mainFrame();
QWebElement document = frame->documentElement();
QWebElement body = document.findFirst("body");
QWebElement element = body.findFirst("div." + divClass);
element.removeFromDocument();
}
示例3: updateBlockedPageElements
void QtWebKitWebPage::updateBlockedPageElements(const QStringList domainList, const bool isException)
{
for (int i = 0; i < domainList.count(); ++i)
{
const QList<QString> exceptionList = isException ? ContentBlockingManager::getHidingRulesExceptions().values(domainList.at(i)) : ContentBlockingManager::getSpecificDomainHidingRules().values(domainList.at(i));
for (int j = 0; j < exceptionList.count(); ++j)
{
const QWebElementCollection elements = mainFrame()->documentElement().findAll(exceptionList.at(j));
for (int k = 0; k < elements.count(); ++k)
{
QWebElement element = elements.at(k);
if (element.isNull())
{
continue;
}
if (isException)
{
element.setStyleProperty(QLatin1String("display"), QLatin1String("block"));
}
else
{
element.removeFromDocument();
}
}
}
}
}
示例4: move
void HtmlExtractor::move(QWebElement &element, const QString &file, bool outer)
{
if(!element.isNull())
{
WriteFile(file, outer?element.toOuterXml():element.toInnerXml());
element.removeFromDocument();
}
}
示例5: fixImgNode
void EnmlFormatter::fixImgNode(QWebElement &e) {
QString enType = e.attribute("en-tag", "");
// Check if we have an en-crypt tag. Change it from an img to en-crypt
if (enType.toLower() == "en-crypt") {
QString encrypted = e.attribute("alt");
QString cipher = e.attribute("cipher", "RC2");
QString hint = e.attribute("hint", "");
QString length = e.attribute("length", "64");
e.removeAttribute("onmouseover");
e.removeAttribute("name");
e.removeAttribute("alt");
e.removeAttribute("en-tag");
e.removeAttribute("contenteditable");
e.removeAttribute("style");
removeInvalidAttributes(e);
e.setInnerXml(encrypted);
e.setOuterXml("<en-crypt cipher=\"" +cipher +"\" length=\"" +
length + "\" hint=\"" +hint
+"\">"+encrypted+"</en-crypt>");
// e.setOuterXml(e.toOuterXml().replace("<img", "<en-crypt").replace("</img", "</en-crypt"));
return;
}
// Check if we have a temporary image. If so, remove it
if (enType.toLower() == "temporary") {;
e.removeFromDocument();
return;
}
// Latex images are really just img tags, so we now handle them later
// Check if we have a LaTeX image. Remove the parent link tag
// if (enType.toLower() == "en-latex") {
// enType = "en-media";
// parent.parentNode().replaceChild(e, parent);
// }
// If we've gotten this far, we have an en-media tag
e.removeAttribute("en-tag");
int lid = e.attribute("lid").toInt();
resources.append(lid);
removeInvalidAttributes(e);
e.setOuterXml(e.toOuterXml().replace("<img", "<en-media").replace("</img", "</en-media"));
}
示例6: fixObjectNode
void EnmlFormatter::fixObjectNode(QWebElement &e) {
QString type = e.attribute("type", "");
if (type == "application/pdf") {
qint32 lid = e.attribute("lid", "0").toInt();
e.removeAttribute("width");
e.removeAttribute("height");
e.removeAttribute("lid");
e.removeAttribute("border");
if (lid>0) {
resources.append(lid);
e.setOuterXml(e.toOuterXml().replace("<object", "<en-media").replace("</object", "</en-media"));
}
removeInvalidAttributes(e);
} else {
e.removeFromDocument();
}
}
示例7: blockImage
void UserFiltersModel::blockImage ()
{
QAction *blocker = qobject_cast<QAction*> (sender ());
if (!blocker)
{
qWarning () << Q_FUNC_INFO
<< "sender is not a QAction*"
<< sender ();
return;
}
QUrl blockUrl = blocker->property ("CleanWeb/URL").value<QUrl> ();
QWebView *view = qobject_cast<QWebView*> (blocker->
property ("CleanWeb/View").value<QObject*> ());
if (InitiateAdd (blockUrl.toString ()) && view)
{
QWebFrame *frame = view->page ()->mainFrame ();
QWebElement elem = frame->findFirstElement ("img[src=\"" + blockUrl.toEncoded () + "\"]");
if (!elem.isNull ())
elem.removeFromDocument ();
}
}
示例8: addMessageTop
void QtWebKitChatView::addMessageTop(boost::shared_ptr<ChatSnippet> snippet) {
// save scrollbar maximum value
if (!topMessageAdded_) {
scrollBarMaximum_ = webPage_->mainFrame()->scrollBarMaximum(Qt::Vertical);
}
topMessageAdded_ = true;
QWebElement continuationElement = firstElement_.findFirst("#insert");
bool insert = snippet->getAppendToPrevious();
bool fallback = continuationElement.isNull();
boost::shared_ptr<ChatSnippet> newSnippet = (insert && fallback) ? snippet->getContinuationFallbackSnippet() : snippet;
QWebElement newElement = snippetToDOM(newSnippet);
if (insert && !fallback) {
Q_ASSERT(!continuationElement.isNull());
continuationElement.replace(newElement);
} else {
continuationElement.removeFromDocument();
topInsertPoint_.prependOutside(newElement);
}
firstElement_ = newElement;
if (lastElement_.isNull()) {
lastElement_ = firstElement_;
}
if (fontSizeSteps_ != 0) {
double size = 1.0 + 0.2 * fontSizeSteps_;
QString sizeString(QString().setNum(size, 'g', 3) + "em");
const QWebElementCollection spans = firstElement_.findAll("span.swift_resizable");
Q_FOREACH (QWebElement span, spans) {
span.setStyleProperty("font-size", sizeString);
}
示例9: linkClicked
void CellmlAnnotationViewMetadataNormalViewDetailsWidget::linkClicked()
{
// Retrieve some information about the link
mOutputOntologicalTerms->retrieveLinkInformation(mLink, mTextContent);
// Check whether we have clicked a resource/id link or a button link
if (mTextContent.isEmpty()) {
// Update some information
CellMLSupport::CellmlFileRdfTriple *rdfTriple = mRdfTriplesMapping.value(mLink);
QString qualifier = (rdfTriple->modelQualifier() != CellMLSupport::CellmlFileRdfTriple::ModelUnknown)?
rdfTriple->modelQualifierAsString():
rdfTriple->bioQualifierAsString();
QString rdfTripleInformation = qualifier+"|"+rdfTriple->resource()+"|"+rdfTriple->id();
mUrls.remove(rdfTripleInformation);
mRdfTripleInformationSha1s.removeOne(mLink);
mRdfTriplesMapping.remove(mLink);
--mItemsCount;
// Determine the 'new' RDF triple information to look up, based on
// whether there are RDF triples left and whether the current RDF triple
// is the one being highlighted
QWebElement rdfTripleElement = mOutputOntologicalTerms->page()->mainFrame()->documentElement().findFirst(QString("tr[id=item_%1]").arg(mLink));
if (!mItemsCount) {
mRdfTripleInformation = QString();
mInformationType = None;
} else if (!mLink.compare(mRdfTripleInformationSha1)) {
QWebElement newRdfTripleEment = rdfTripleElement.nextSibling();
if (newRdfTripleEment.isNull())
newRdfTripleEment = rdfTripleElement.previousSibling();
static const QRegularExpression ItemRegEx = QRegularExpression("^item_");
CellMLSupport::CellmlFileRdfTriple *newRdfTriple = mRdfTriplesMapping.value(newRdfTripleEment.attribute("id").remove(ItemRegEx));
QString newQualifier = (newRdfTriple->modelQualifier() != CellMLSupport::CellmlFileRdfTriple::ModelUnknown)?
newRdfTriple->modelQualifierAsString():
newRdfTriple->bioQualifierAsString();
mRdfTripleInformation = newQualifier+"|"+newRdfTriple->resource()+"|"+newRdfTriple->id();
if (!rdfTripleInformation.compare(mFirstRdfTripleInformation))
mFirstRdfTripleInformation = mRdfTripleInformation;
if (!rdfTripleInformation.compare(mLastRdfTripleInformation))
mLastRdfTripleInformation = mRdfTripleInformation;
}
// Remove the RDF triple from our GUI
rdfTripleElement.removeFromDocument();
// Do some additional GUI updates
mLookUpRdfTripleInformation = Any;
if (!mLink.compare(mRdfTripleInformationSha1))
additionalGuiUpdates(mRdfTripleInformation, mInformationType, mLookUpRdfTripleInformation);
else
// The looked up information is the same, so no need to look it up
// again
// Note: indeed, to look it up again would result in the web view
// flashing (since a 'new' web page would be loaded)...
additionalGuiUpdates(mRdfTripleInformation, mInformationType, No);
// Remove the RDF triple from the CellML file
mCellmlFile->rdfTriples().remove(rdfTriple);
// Let people know that an RDF triple has been removed
emit rdfTripleRemoved(rdfTriple);
} else {
// We have clicked on a qualifier/resource/id link, so start by enabling
// the looking up of any RDF triple information
mLookUpRdfTripleInformation = Any;
// Call our generic look up function
QStringList rdfTripleInformation = mLink.split("|");
genericLookUp(mLink,
(!rdfTripleInformation[0].compare(mTextContent))?
Qualifier:
!rdfTripleInformation[1].compare(mTextContent)?
Resource:
Id);
}
}
示例10: rebuildNoteEnml
/* Take the ENML note and transform it into HTML that WebKit will
not complain about */
QByteArray EnmlFormatter::rebuildNoteEnml() {
resources.clear();
QByteArray b;
qint32 index;
content.replace("</input>","");
// Strip off HTML header
index = content.indexOf("<body");
index = content.indexOf(">", index)+1;
content.remove(0,index);
index = content.indexOf("</body");
content.truncate(index);
b.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
b.append("<!DOCTYPE en-note SYSTEM 'http://xml.evernote.com/pub/enml2.dtd'>\n");
b.append("<html><head><title></title></head>");
b.append("<body style=\"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;\" >");
b.append(content);
b.append("</body></html>");
content.clear();
content = b;
// Run it through "tidy". It is a program which will fix any invalid HTML
// and give us the results back through stdout. In a perfect world this
// wouldn't be needed, but WebKit doesn't always give back good HTML.
QProcess tidyProcess;
tidyProcess.start("tidy -raw -asxhtml -q -m -u -utf8 ", QIODevice::ReadWrite|QIODevice::Unbuffered);
QLOG_DEBUG() << "Starting tidy " << tidyProcess.waitForStarted();
tidyProcess.waitForStarted();
tidyProcess.write(content);
tidyProcess.closeWriteChannel();
tidyProcess.waitForFinished();
QLOG_DEBUG() << "Stopping tidy " << tidyProcess.waitForFinished() << " Return Code: " << tidyProcess.state();
QLOG_DEBUG() << "Tidy Errors:" << tidyProcess.readAllStandardError();
content.clear();
content.append(tidyProcess.readAllStandardOutput());
if (content == "") {
formattingError = true;
return "";
}
// Tidy puts this in place, but we don't really need it.
content.replace("<form>", "");
content.replace("</form>", "");
index = content.indexOf("<body");
content.remove(0,index);
content.prepend("<style>img { height:auto; width:auto; max-height:auto; max-width:100%; }</style>");
content.prepend("<head><meta http-equiv=\"content-type\" content=\"text-html; charset=utf-8\"></head>");
content.prepend("<html>");
content.append("</html>");
content = fixEncryptionTags(content);
QWebPage page;
QEventLoop loop;
page.mainFrame()->setContent(content);
QObject::connect(&page, SIGNAL(loadFinished(bool)), &loop, SLOT(quit()));
QWebElement element = page.mainFrame()->documentElement();
QStringList tags = findAllTags(element);
for (int i=0; i<tags.size(); i++) {
QString tag = tags[i];
QWebElementCollection anchors = page.mainFrame()->findAllElements(tag);
foreach (QWebElement element, anchors) {
if (element.tagName().toLower() == "input") {
processTodo(element);
} else if (element.tagName().toLower() == "a") {
fixLinkNode(element);
} else if (element.tagName().toLower() == "object") {
fixObjectNode(element);
} else if (element.tagName().toLower() == "img") {
fixImgNode(element);
} else if (!isElementValid(element.tagName()))
element.removeFromDocument();
}
}
content.clear();
content.append(element.toOuterXml());
// Strip off HTML header
index = content.indexOf("<body");
index = content.indexOf(">", index)+1;
content.remove(0,index);
index = content.indexOf("</body");
content.truncate(index);
b.clear();
b.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
b.append("<!DOCTYPE en-note SYSTEM 'http://xml.evernote.com/pub/enml2.dtd'>");
b.append("<en-note style=\"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;\" >");
b.append(content);
b.append("</en-note>");
content.clear();
content = b;
postXmlFix();
return content;
//.........这里部分代码省略.........