本文整理汇总了C++中QWebElement::setAttribute方法的典型用法代码示例。如果您正苦于以下问题:C++ QWebElement::setAttribute方法的具体用法?C++ QWebElement::setAttribute怎么用?C++ QWebElement::setAttribute使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QWebElement
的用法示例。
在下文中一共展示了QWebElement::setAttribute方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadFinished
void AuthenticationDialog::loadFinished()
{
// Q_D(AuthenticationDialog);
QUrl url = d->webView->url();
if (url.host() == "www.facebook.com" && url.path() == "/login.php") {
if (d->username.isEmpty() && d->password.isEmpty()) {
return;
}
QWebFrame *frame = d->webView->page()->mainFrame();
if (!d->username.isEmpty()) {
QWebElement email = frame->findFirstElement("input#email");
if (!email.isNull()) {
email.setAttribute("value", d->username);
}
}
if (!d->password.isEmpty()) {
QWebElement passd = frame->findFirstElement("input#pass");
if (!passd.isNull()) {
passd.setAttribute("value", d->password);
}
}
return;
}
}
示例2: modifyPdfTags
void NoteFormatter::modifyPdfTags(qint32 resLid, QWebElement &enmedia) {
enmedia.setAttribute("width", "100%");
enmedia.setAttribute("height", "100%");
enmedia.setAttribute("lid", QString::number(resLid));
QString x = enmedia.toOuterXml();
x.replace("en-media", "object");
enmedia.setOuterXml(x);
x = enmedia.toOuterXml();
}
示例3: modifyTodoTags
// Modify the en-to tag into an input field
void NoteFormatter::modifyTodoTags(QWebElement &todo) {
todo.setAttribute("type", "checkbox");
// Checks the en-to tag wheter or not the todo-item is checked or not
// and sets up the HTML to keep storing the information in value
QString checked = todo.attribute("checked");
if (checked.toLower() == "true")
todo.setAttribute("checked", "checked");
else
todo.removeAttribute("checked");
todo.setAttribute("onClick", "if(!checked) removeAttribute('checked'); else setAttribute('checked', 'checked'); editorWindow.editAlert();");
todo.setAttribute("style", "cursor: hand;");
todo.setOuterXml(todo.toOuterXml().replace("en-todo","input"));
}
示例4: buildInkNote
/* If we have an ink note, then we need to pull the image and display it */
bool NoteFormatter::buildInkNote(QWebElement &docElem, QString &hash) {
ResourceTable resTable(global.db);
qint32 resLid = resTable.getLidByHashHex(note.guid, hash);
if (resLid <= 0)
return false;
docElem.setAttribute("en-tag", "en-media");
docElem.setAttribute("lid", QString::number(resLid));
docElem.setAttribute("type", "application/vnd.evernote.ink");
QString filename = QString("file:///") +global.fileManager.getDbaDirPath()+QString::number(resLid)+QString(".png");
docElem.setAttribute("src", filename);
QString k = docElem.toOuterXml();
k.replace("<en-media", "<img");
k.replace("enmedia>", "img>");;
docElem.setOuterXml(k);
return true;
}
示例5: setNumConnections
void ShadowGUI::setNumConnections(int count)
{
QWebElement connectionsIcon = documentFrame->findFirstElement("#connectionsIcon");
QString icon;
switch(count)
{
case 0: icon = "qrc:///icons/connect_0"; break;
case 1: case 2: icon = "qrc:///icons/connect_1"; break;
case 3: case 4: icon = "qrc:///icons/connect_2"; break;
case 5: case 6: icon = "qrc:///icons/connect_3"; break;
case 7: case 8: icon = "qrc:///icons/connect_4"; break;
case 9: case 10: icon = "qrc:///icons/connect_5"; break;
default: icon = "qrc:///icons/connect_6"; break;
}
connectionsIcon.setAttribute("src", icon);
connectionsIcon.setAttribute("title", tr("%n active connection(s) to ZirkCoin network", "", count));
}
示例6: processTodo
void EnmlFormatter::processTodo(QWebElement &node) {
bool checked=false;
if (node.hasAttribute("checked"))
checked = true;
node.removeAttribute("style");
node.removeAttribute("type");
removeInvalidAttributes(node);
if (checked)
node.setAttribute("checked", "true");
node.setOuterXml(node.toOuterXml().replace("<input", "<en-todo").replace("</input", "</en-todo"));
}
示例7: sendReportUsingGitreport
/**
* @fn sendReportUsingGitreport
*/
void GitreportModule::sendReportUsingGitreport(const QMap<QString, QString> info)
{
if (debug) qDebug() << "[GitreportModule]" << "[sendReportUsingGitreport]";
QWebElement document = webView->page()->mainFrame()->documentElement();
QWebElement captchaKey = document.findFirst(QString("input#captcha"));
QWebElement emailInput = document.findFirst(QString("input#email"));
QWebElement textArea = document.findFirst(QString("textarea#details"));
QWebElement usernameInput = document.findFirst(QString("input#name"));
// input
usernameInput.setAttribute(QString("value"), info[QString("username")]);
emailInput.setAttribute(QString("value"), info[QString("password")]);
textArea.setPlainText(info[QString("body")]);
captchaKey.setAttribute(QString("value"), info[QString("captcha")]);
// send request
document.findFirst(QString("input[name=commit]")).evaluateJavaScript("this.click()");
disconnect(webView, SIGNAL(loadFinished(bool)), this, SLOT(gitreportLoaded(bool)));
disconnect(webView, SIGNAL(loadFinished(bool)), this, SLOT(gitreportFinished(bool)));
connect(webView, SIGNAL(loadFinished(bool)), this, SLOT(gitreportFinished(bool)));
}
示例8: completePage
void AutoFillModel::completePage(WebPage* page)
{
if (!page) {
return;
}
QUrl pageUrl = page->url();
if (!isStored(pageUrl)) {
return;
}
QWebElementCollection inputs;
QList<QWebFrame*> frames;
frames.append(page->mainFrame());
while (!frames.isEmpty()) {
QWebFrame* frame = frames.takeFirst();
inputs.append(frame->findAllElements("input"));
frames += frame->childFrames();
}
QString server = pageUrl.host();
if (server.isEmpty()) {
server = pageUrl.toString();
}
QSqlQuery query;
query.prepare("SELECT data FROM autofill WHERE server=?");
query.addBindValue(server);
query.exec();
query.next();
QByteArray data = query.value(0).toByteArray();
if (data.isEmpty()) {
return;
}
// Why not to use encodedQueryItems = QByteArrays ?
// Because we need to filter "+" characters that must be spaces
// (not real "+" characters "%2B")
QueryItems arguments = QUrl::fromEncoded("http://bla.com/?" + data).queryItems();
for (int i = 0; i < arguments.count(); i++) {
QString key = arguments.at(i).first;
QString value = arguments.at(i).second;
key.replace("+", " ");
value.replace("+", " ");
key = QUrl::fromEncoded(key.toUtf8()).toString();
value = QUrl::fromEncoded(value.toUtf8()).toString();
for (int i = 0; i < inputs.count(); i++) {
QWebElement element = inputs.at(i);
if (element.attribute("type") != "text" && element.attribute("type") != "password" && element.attribute("type") != "") {
continue;
}
if (key == element.attribute("name")) {
element.setAttribute("value", value);
}
}
}
}
示例9: modifyApplicationTags
// Modify the en-media tag into an attachment
void NoteFormatter::modifyApplicationTags(QWebElement &enmedia, QString &hash, QString appl) {
if (appl.toLower() == "vnd.evernote.ink") {
inkNote = true;
readOnly = true;
buildInkNote(enmedia, hash);
return;
}
ResourceTable resTable(global.db);
QString contextFileName;
qint32 resLid = resTable.getLidByHashHex(note.guid, hash);
Resource r;
resTable.get(r, resLid, false);
if (!r.data.isSet())
resourceError = true;
else {
// If we are running the formatter and we are not generating a thumbnail
QString mimetype = "";
if (r.mime.isSet())
mimetype = r.mime;
if (mimetype == "application/pdf" && pdfPreview && !thumbnail) {
modifyPdfTags(resLid, enmedia);
return;
}
// If we are running the formatter so we can generate a thumbnail and it is a PDF
if (mimetype == "application/pdf" && pdfPreview && thumbnail) {
QString printImageFile = global.fileManager.getTmpDirPath() + QString::number(resLid) +QString("-print.jpg");
QString file = global.fileManager.getDbaDirPath() + QString::number(resLid) +".pdf";
Poppler::Document *doc;
doc = Poppler::Document::load(file);
if (doc == NULL)
return;
QImage *image = new QImage(doc->page(0)->renderToImage());
image->save(printImageFile,"jpg");
delete image;
enmedia.setAttribute("src", printImageFile);
enmedia.removeAttribute("hash");
enmedia.removeAttribute("type");
enmedia.setOuterXml(enmedia.toOuterXml().replace("<en-media","<img"));
enmedia.setOuterXml(enmedia.toOuterXml().replace("</en-media>","</img>"));
return;
}
QString fileDetails = "";
MimeReference ref;
ResourceAttributes attributes;
if (r.attributes.isSet())
attributes = r.attributes;
if (attributes.fileName.isSet())
fileDetails = ref.getExtensionFromMime(r.mime, fileDetails);
enmedia.setAttribute("href", QString("nnres:") +global.fileManager.getDbaDirPath()+QString::number(resLid)
+fileDetails);
contextFileName = global.fileManager.getTmpDirPath("")+QString::number(resLid) +global.attachmentNameDelimeter + fileDetails;
// Setup the context menu. This is useful if we want to do a "save as" or such
contextFileName = contextFileName.replace("\\", "/");
enmedia.setAttribute("onContextMenu", "window.browserWindow.resourceContextMenu('" +contextFileName +"');");
enmedia.setAttribute("en-tag", "en-media");
enmedia.setAttribute("lid", QString::number(resLid));
enmedia.appendInside("<img/>");
QWebElement newText = enmedia.lastChild();
// Build an icon of the image
QString fileExt;
if (attributes.fileName.isSet())
fileExt = attributes.fileName;
else
fileExt = appl;
QString fn;
QString mime;
if (attributes.fileName.isSet())
fn = attributes.fileName;
if (r.mime.isSet())
mime = r.mime;
fileExt = ref.getExtensionFromMime(mime, fn);
QString icon = findIcon(resLid, r, fileExt);
newText.setAttribute("src", "file:///"+icon);
if (attributes.fileName.isSet())
newText.setAttribute("title",attributes.fileName);
newText.setAttribute("en-tag", "temporary");
//Rename the tag to a <a> link
enmedia.setOuterXml(enmedia.toOuterXml().replace("<en-media","<a"));
enmedia.setOuterXml(enmedia.toOuterXml().replace("</en-media>","</a>"));
}
}
示例10: modifyImageTags
/* Modify an image tag. Basically we turn it back into a picture, write out the file, and
modify the ENML */
void NoteFormatter::modifyImageTags(QWebElement &enMedia, QString &hash) {
QString mimetype = enMedia.attribute("type");
qint32 resLid = 0;
resLid = hashMap[hash];
QString highlightString = "";
if (resLid>0) {
QLOG_TRACE() << "Getting resource";
Resource r = resourceMap[resLid];
QLOG_TRACE() << "resource retrieved";
MimeReference ref;
QString filename;
ResourceAttributes attributes;
if (r.attributes.isSet())
attributes = r.attributes;
if (attributes.fileName.isSet())
filename = attributes.fileName;
QString type = ref.getExtensionFromMime(mimetype, filename);
Data data;
if (r.data.isSet())
data = r.data;
if (data.size.isSet() && data.size > 0) {
QString imgfile = "file:///"+global.fileManager.getDbDirPath(QString("dba/") +QString::number(resLid) +type);
enMedia.setAttribute("src", imgfile);
// Check if this is a LaTeX image
ResourceAttributes attributes;
if (r.attributes.isSet())
attributes = r.attributes;
QString sourceUrl = "";
if (attributes.sourceURL.isSet())
sourceUrl = attributes.sourceURL;
if (sourceUrl.toLower().startsWith("http://latex.codecogs.com/gif.latex?")) {
enMedia.appendInside("<img/>");
QWebElement newText = enMedia.lastChild();
enMedia.setAttribute("en-tag", "en-latex");
newText.setAttribute("onMouseOver", "style.cursor='pointer'");
newText.setAttribute("title", sourceUrl);
newText.setAttribute("href", "latex://"+QString::number(resLid));
}
enMedia.setAttribute("onContextMenu", "window.browserWindow.imageContextMenu('"
+QString::number(resLid) +"', '"
+QString::number(resLid) +type +"');");
highlightString = addImageHighlight(resLid, imgfile);
if (highlightString != "")
enMedia.setAttribute("onload", highlightString);
}
} else {
resourceError = true;
readOnly = true;
}
// Reset the tags to something that WebKit will understand
enMedia.setAttribute("en-tag", "en-media");
enMedia.setPlainText("");
enMedia.setAttribute("lid", QString::number(resLid));
// rename the <enmedia> tag to <img>
enMedia.setOuterXml(enMedia.toOuterXml().replace("<en-media","<img"));
enMedia.setOuterXml(enMedia.toOuterXml().replace("</en-media>","</img>"));
}
示例11: modifyTags
/*
This will go through and modify some of the ENML tags and turn
them into HTML tags. Things like en-media & en-crypt have no
HTML values, so we turn them into HTML.
*/
void NoteFormatter::modifyTags(QWebPage &doc) {
tempFiles.clear();
// Modify en-media tags
QLOG_TRACE() << "Searching for all en-media tags;";
QWebElementCollection anchors = doc.mainFrame()->findAllElements("en-media");
QLOG_TRACE() << "Search complete: " << anchors.toList().size();
foreach (QWebElement enmedia, anchors) {
if (enmedia.hasAttribute("type")) {
QString attr = enmedia.attribute("type");
QString hash = enmedia.attribute("hash");
QStringList type = attr.split("/");
if (type.size() >= 2) {
QString appl = type[1];
QLOG_TRACE() << "En-Media tag type: " << type[0];
if (type[0] == "image")
modifyImageTags(enmedia, hash);
else
modifyApplicationTags(enmedia, hash, appl);
QLOG_TRACE() << "Type modified";
}
}
}
// Modify todo tags
anchors = doc.mainFrame()->findAllElements("en-todo");
qint32 enTodoCount = anchors.count();
for (qint32 i=enTodoCount-1; i>=0; i--) {
QWebElement enmedia = anchors.at(i);
modifyTodoTags(enmedia);
}
anchors = doc.mainFrame()->findAllElements("en-crypt");
qint32 enCryptLen = anchors.count();
for (qint32 i=enCryptLen-1; i>=0; i--) {
QWebElement enmedia = anchors.at(i);
QString hint = enmedia.attribute("hint");
QString cipher = enmedia.attribute("cipher", "RC2");
QString length = enmedia.attribute("length","64");
enmedia.setAttribute("contentEditable","false");
enmedia.setAttribute("src", QString("file://")+global.fileManager.getImageDirPath("encrypt.png"));
enmedia.setAttribute("en-tag","en-crypt");
enmedia.setAttribute("cipher", cipher);
enmedia.setAttribute("length", length);
enmedia.setAttribute("hint", hint);
enmedia.setAttribute("alt", enmedia.toInnerXml());
global.cryptCounter++;
enmedia.setAttribute("id", "crypt"+QString().number(global.cryptCounter));
QString encryptedText = enmedia.toInnerXml();
// If the encryption string contains crlf at the end, remove them because they mess up the javascript.
if (encryptedText.endsWith("\n"))
encryptedText.truncate(encryptedText.length()-1);
if (encryptedText.endsWith("\r"))
encryptedText.truncate(encryptedText.length()-1);
// Add the commands
hint = hint.replace("'","'");
enmedia.setAttribute("onClick", "window.browserWindow.decryptText('crypt"+
QString().number(global.cryptCounter)+
"', '"+encryptedText+"', '"+
hint +"', '" +
cipher+ "', " +
length +
");");
enmedia.setAttribute("onMouseOver", "style.cursor='hand'");
enmedia.setInnerXml("");
QString k = enmedia.toOuterXml();
k.replace("<en-crypt", "<img");
k.replace("img>", "<en-crypt");
enmedia.setOuterXml(k);
}
// Modify link tags
anchors = doc.mainFrame()->findAllElements("a");
enCryptLen = anchors.count();
for (qint32 i=0; i<anchors.count(); i++) {
QWebElement element = anchors.at(i);
if (!element.attribute("href").toLower().startsWith("latex://"))
element.setAttribute("title", element.attribute("href"));
else {
element.setAttribute("title", element.attribute("title").toLower().replace("http://latex.codecogs.com/gif.latex?",""));
}
}
}
示例12: setNumBlocks
void ShadowGUI::setNumBlocks(int count, int nTotalBlocks)
{
QWebElement blocksIcon = documentFrame->findFirstElement("#blocksIcon");
QWebElement syncingIcon = documentFrame->findFirstElement("#syncingIcon");
QWebElement syncProgressBar = documentFrame->findFirstElement("#syncProgressBar");
// don't show / hide progress bar and its label if we have no connection to the network
if (!clientModel || clientModel->getNumConnections() == 0)
{
syncProgressBar.setAttribute("style", "display:none;");
return;
}
// -- translation (tr()) makes it difficult to neatly pick block/header
static QString sBlockType = nNodeMode == NT_FULL ? tr("block") : tr("header");
static QString sBlockTypeMulti = nNodeMode == NT_FULL ? tr("blocks") : tr("headers");
QString strStatusBarWarnings = clientModel->getStatusBarWarnings();
QString tooltip;
if (nNodeMode != NT_FULL
&& nNodeState == NS_GET_FILTERED_BLOCKS)
{
tooltip = tr("Synchronizing with network...");
+ "\n"
+ tr("Downloading filtered blocks...");
int nRemainingBlocks = nTotalBlocks - pwalletMain->nLastFilteredHeight;
float nPercentageDone = pwalletMain->nLastFilteredHeight / (nTotalBlocks * 0.01f);
tooltip += "\n"
+ tr("~%1 filtered block(s) remaining (%2% done).").arg(nRemainingBlocks).arg(nPercentageDone);
count = pwalletMain->nLastFilteredHeight;
syncProgressBar.removeAttribute("style");
} else
if (count < nTotalBlocks)
{
int nRemainingBlocks = nTotalBlocks - count;
float nPercentageDone = count / (nTotalBlocks * 0.01f);
syncProgressBar.removeAttribute("style");
if (strStatusBarWarnings.isEmpty())
{
bridge->networkAlert("");
tooltip = tr("Synchronizing with network...");
if (nNodeMode == NT_FULL)
{
tooltip += "\n"
+ tr("~%n block(s) remaining", "", nRemainingBlocks);
} else
{
char temp[128];
snprintf(temp, sizeof(temp), "~%%n %s remaining", nRemainingBlocks == 1 ? qPrintable(sBlockType) : qPrintable(sBlockTypeMulti));
tooltip += "\n"
+ tr(temp, "", nRemainingBlocks);
};
}
tooltip += (tooltip.isEmpty()? "" : "\n")
+ tr("Downloaded %1 of %2 %3 of transaction history (%4% done).").arg(count).arg(nTotalBlocks).arg(sBlockTypeMulti).arg(nPercentageDone, 0, 'f', 2);
}
else
{
tooltip = tr("Downloaded %1 blocks of transaction history.").arg(count);
}
// Override progressBarLabel text when we have warnings to display
if (!strStatusBarWarnings.isEmpty())
bridge->networkAlert(strStatusBarWarnings);
QDateTime lastBlockDate;
if (nNodeMode == NT_FULL)
lastBlockDate = clientModel->getLastBlockDate();
else
lastBlockDate = clientModel->getLastBlockThinDate();
int secs = lastBlockDate.secsTo(QDateTime::currentDateTime());
QString text;
// Represent time from last generated block in human readable text
if (secs <= 0)
{
// Fully up to date. Leave text empty.
} else
if (secs < 60)
{
text = tr("%n second(s) ago","",secs);
} else
if (secs < 60*60)
{
text = tr("%n minute(s) ago","",secs/60);
} else
if (secs < 24*60*60)
{
text = tr("%n hour(s) ago","",secs/(60*60));
//.........这里部分代码省略.........