本文整理汇总了C++中QWebHitTestResult::element方法的典型用法代码示例。如果您正苦于以下问题:C++ QWebHitTestResult::element方法的具体用法?C++ QWebHitTestResult::element怎么用?C++ QWebHitTestResult::element使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QWebHitTestResult
的用法示例。
在下文中一共展示了QWebHitTestResult::element方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: contextMenuEvent
void webview::contextMenuEvent(QContextMenuEvent * event)
{
QMenu * menu = new QMenu();
menu->setVisible(true);
QWebHitTestResult element = this->page()->mainFrame()->hitTestContent(event->pos());
if(!element.linkUrl().isEmpty())
{
QAction * newtab = this->pageAction(QWebPage::OpenLinkInNewWindow);
newtab->setText(tr("open link in new tab"));
menu->addAction(newtab);
menu->addAction(this->pageAction(QWebPage::DownloadLinkToDisk));
menu->addAction(this->pageAction(QWebPage::CopyLinkToClipboard));
}
if(!element.imageUrl().isEmpty())
{
menu->addAction(this->pageAction(QWebPage::DownloadImageToDisk));
menu->addAction(this->pageAction(QWebPage::CopyImageToClipboard));
menu->addAction(this->pageAction(QWebPage::CopyImageUrlToClipboard));
QAction * newimage = this->pageAction(QWebPage::OpenImageInNewWindow);
newimage->setText(tr("open image in new tab"));
menu->addAction(newimage);
}
if(!page()->selectedText().isEmpty())
{
menu->addAction(this->pageAction(QWebPage::Copy));
menu->addAction(this->pageAction(QWebPage::Cut));
menu->addAction(this->pageAction(QWebPage::Paste));
menu->addAction(this->pageAction(QWebPage::Undo));
menu->addAction(this->pageAction(QWebPage::Redo));
menu->addAction(this->pageAction(QWebPage::SelectAll));
}
if(element.element().tagName().toLower() == "input" && element.element().attribute(QLatin1String("type")).toLower() == "text")
{
menu->addAction(this->pageAction(QWebPage::SelectAll));
menu->addAction(this->pageAction(QWebPage::Paste));
menu->addAction(this->pageAction(QWebPage::SetTextDirectionLeftToRight));
menu->addAction(this->pageAction(QWebPage::SetTextDirectionRightToLeft));
menu->addAction(this->pageAction(QWebPage::SetTextDirectionDefault));
menu->addAction(this->pageAction(QWebPage::MoveToNextWord));
}
if(!element.isNull())
{
menu->addAction(this->pageAction(QWebPage::Back));
menu->addAction(this->pageAction(QWebPage::Forward));
menu->addAction(this->pageAction(QWebPage::Reload));
menu->addAction(this->pageAction(QWebPage::Stop));
menu->addAction(this->pageAction(QWebPage::InspectElement));
}
menu->exec(event->globalPos());
}
示例2: findElement
void ClickToFlash::findElement()
{
if (!loadButton_)
return;
QPoint objectPos = page_->view()->mapFromGlobal(loadButton_->mapToGlobal(loadButton_->pos()));
QWebFrame* objectFrame = page_->frameAt(objectPos);
QWebHitTestResult hitResult;
QWebElement hitElement;
if (objectFrame) {
hitResult = objectFrame->hitTestContent(objectPos);
hitElement = hitResult.element();
}
if (!hitElement.isNull() && (hitElement.tagName().compare("embed", Qt::CaseInsensitive) == 0 ||
hitElement.tagName().compare("object", Qt::CaseInsensitive) == 0)) {
element_ = hitElement;
return;
}
// HitTestResult failed, trying to find element by src
// attribute in elements at all frames on page (less accurate)
QList<QWebFrame*> frames;
frames.append(objectFrame);
frames.append(page_->mainFrame());
while (!frames.isEmpty()) {
QWebFrame* frame = frames.takeFirst();
if (!frame) {
continue;
}
QWebElement docElement = frame->documentElement();
QWebElementCollection elements;
elements.append(docElement.findAll(QLatin1String("embed")));
elements.append(docElement.findAll(QLatin1String("object")));
foreach (const QWebElement &element, elements) {
if (!checkElement(element) && !checkUrlOnElement(element)) {
continue;
}
element_ = element;
return;
}
frames += frame->childFrames();
}
}
示例3: populateContextMenu
void Speller::populateContextMenu(QMenu* menu, const QWebHitTestResult &hitTest)
{
m_element = hitTest.element();
if (!m_enabled || m_element.isNull() ||
m_element.attribute(QLatin1String("type")) == QLatin1String("password")) {
return;
}
const QString text = m_element.evaluateJavaScript("this.value").toString();
const int pos = m_element.evaluateJavaScript("this.selectionStart").toInt() + 1;
QTextBoundaryFinder finder = QTextBoundaryFinder(QTextBoundaryFinder::Word, text);
finder.setPosition(pos);
m_startPos = finder.toPreviousBoundary();
m_endPos = finder.toNextBoundary();
const QString &word = text.mid(m_startPos, m_endPos - m_startPos).trimmed();
if (!isValidWord(word) || !isMisspelled(word)) {
return;
}
const int limit = 6;
QStringList suggests = suggest(word);
int count = suggests.count() > limit ? limit : suggests.count();
QFont boldFont = menu->font();
boldFont.setBold(true);
for (int i = 0; i < count; ++i) {
QAction* act = menu->addAction(suggests.at(i), this, SLOT(replaceWord()));
act->setData(suggests.at(i));
act->setFont(boldFont);
}
if (count == 0) {
menu->addAction(tr("No suggestions"))->setEnabled(false);
}
menu->addAction(tr("Add to dictionary"), this, SLOT(addToDictionary()))->setData(word);
menu->addSeparator();
}
示例4: populateWebViewMenu
void PIM_Handler::populateWebViewMenu(QMenu* menu, WebView* view, const QWebHitTestResult &hitTest)
{
m_view = view;
m_element = hitTest.element();
if (!hitTest.isContentEditable()) {
return;
}
if (!m_loaded) {
loadSettings();
}
QMenu* pimMenu = new QMenu(tr("Insert Personal Information"));
pimMenu->setIcon(QIcon(":/PIM/data/PIM.png"));
if (!m_allInfo[PI_FirstName].isEmpty() && !m_allInfo[PI_LastName].isEmpty()) {
const QString fullname = m_allInfo[PI_FirstName] + " " + m_allInfo[PI_LastName];
QAction* action = pimMenu->addAction(fullname, this, SLOT(pimInsert()));
action->setData(fullname);
}
for (int i = 0; i < PI_Max; ++i) {
const QString info = m_allInfo[PI_Type(i)];
if (info.isEmpty()) {
continue;
}
QAction* action = pimMenu->addAction(info, this, SLOT(pimInsert()));
action->setData(info);
action->setStatusTip(m_translations[PI_Type(i)]);
}
pimMenu->addSeparator();
pimMenu->addAction(tr("Edit"), this, SLOT(showSettings()));
menu->addMenu(pimMenu);
menu->addSeparator();
}
示例5: contextMenuEvent
void WebView::contextMenuEvent(QContextMenuEvent *event)
{
QMenu *menu = new QMenu(this);
QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos());
if (!r.linkUrl().isEmpty()) {
QAction *newWindowAction = menu->addAction(tr("Open in New &Window"), this, SLOT(openActionUrlInNewWindow()));
newWindowAction->setData(r.linkUrl());
QAction *newTabAction = menu->addAction(tr("Open in New &Tab"), this, SLOT(openActionUrlInNewTab()));
newTabAction->setData(r.linkUrl());
menu->addSeparator();
menu->addAction(tr("Save Lin&k"), this, SLOT(downloadLinkToDisk()));
menu->addAction(tr("&Bookmark This Link"), this, SLOT(bookmarkLink()))->setData(r.linkUrl());
menu->addSeparator();
if (!page()->selectedText().isEmpty())
menu->addAction(pageAction(QWebPage::Copy));
menu->addAction(tr("&Copy Link Location"), this, SLOT(copyLinkToClipboard()));
}
if (!r.imageUrl().isEmpty()) {
if (!menu->isEmpty())
menu->addSeparator();
QAction *newWindowAction = menu->addAction(tr("Open Image in New &Window"), this, SLOT(openActionUrlInNewWindow()));
newWindowAction->setData(r.imageUrl());
QAction *newTabAction = menu->addAction(tr("Open Image in New &Tab"), this, SLOT(openActionUrlInNewTab()));
newTabAction->setData(r.imageUrl());
menu->addSeparator();
menu->addAction(tr("&Save Image"), this, SLOT(downloadImageToDisk()));
menu->addAction(tr("&Copy Image"), this, SLOT(copyImageToClipboard()));
menu->addAction(tr("C&opy Image Location"), this, SLOT(copyImageLocationToClipboard()))->setData(r.imageUrl().toString());
menu->addSeparator();
menu->addAction(tr("Block Image"), this, SLOT(blockImage()))->setData(r.imageUrl().toString());
}
if (!page()->selectedText().isEmpty()) {
if (menu->isEmpty()) {
menu->addAction(pageAction(QWebPage::Copy));
} else {
menu->addSeparator();
}
QMenu *searchMenu = menu->addMenu(tr("Search with..."));
QList<QString> list = ToolbarSearch::openSearchManager()->allEnginesNames();
for (int i = 0; i < list.count(); ++i) {
QString name = list.at(i);
OpenSearchEngine *engine = ToolbarSearch::openSearchManager()->engine(name);
QAction *action = new OpenSearchEngineAction(engine, searchMenu);
searchMenu->addAction(action);
action->setData(name);
}
connect(searchMenu, SIGNAL(triggered(QAction *)), this, SLOT(searchRequested(QAction *)));
}
QWebElement element = r.element();
if (!element.isNull()
&& element.tagName().toLower() == QLatin1String("input")
&& element.attribute(QLatin1String("type"), QLatin1String("text")) == QLatin1String("text")) {
if (menu->isEmpty()) {
menu->addAction(pageAction(QWebPage::Copy));
} else {
menu->addSeparator();
}
QVariant variant;
variant.setValue(element);
menu->addAction(tr("Add to the toolbar search"), this, SLOT(addSearchEngine()))->setData(variant);
}
if (menu->isEmpty()) {
delete menu;
menu = page()->createStandardContextMenu();
} else {
if (page()->settings()->testAttribute(QWebSettings::DeveloperExtrasEnabled))
menu->addAction(pageAction(QWebPage::InspectElement));
}
if (!menu->isEmpty()) {
if (BrowserMainWindow::parentWindow(tabWidget())->menuBar()->isHidden()) {
menu->addSeparator();
menu->addAction(BrowserMainWindow::parentWindow(tabWidget())->showMenuBarAction());
}
menu->exec(mapToGlobal(event->pos()));
delete menu;
return;
}
delete menu;
QWebView::contextMenuEvent(event);
}
示例6: highliteElementAtPos
void WBWebTrapWebView::highliteElementAtPos ( const QPoint& pos)
{
mCurrentContentType = Unknown;
if(page() && page()->currentFrame())
{
QWebHitTestResult htr = page()->currentFrame()->hitTestContent (pos);
QRect pageHtr = htr.boundingRect().translated(htr.frame()->pos());
QRect updateRect = mWebViewElementRect.united(pageHtr);
updateRect = updateRect.adjusted(-8, -8, 8, 8);
mDomElementRect = htr.boundingRect();
if (!htr.pixmap().isNull())
{
mCurrentContentType = Image;
qDebug() << "found pixmap at " << htr.boundingRect();
}
else
{
QWebElement element = htr.element();
QString tagName = element.tagName().toLower();
if (tagName == "object"
|| tagName == "embed")
{
mCurrentContentType = ObjectOrEmbed;
}
else if ((tagName == "input") || (tagName == "textarea"))
{
QString ec = potentialEmbedCodeAtPos(pos);
if (ec.length() > 0)
{
qDebug() << "found input data \n\n" << ec;
mCurrentContentType = Input;
}
}
else
{
QString tagName = htr.element().tagName();
QString id = htr.element().attribute("id", "");
QWebElement el = htr.element();
QString idSelector = tagName + "#" + id;
bool idSuccess = (el == el.document().findFirst(idSelector));
if (idSuccess)
{
mElementQuery = idSelector;
mCurrentContentType = ElementByQuery;
}
else
{
//bool isValid = true;
QWebElement elParent = el.parent();
QWebElement currentEl = el;
QString path = tagName;
QStringList pathElements;
do
{
QWebElement someSibling = elParent.firstChild();
int index = 0;
bool foundIndex = false;
do
{
if (someSibling.tagName() == currentEl.tagName())
{
if (someSibling == currentEl)
{
foundIndex = true;
}
else
index++;
}
someSibling = someSibling.nextSibling();
}
while(!someSibling.isNull() && !foundIndex);
QString part;
if (index > 0)
part = QString("%1:nth-child(%2)").arg(currentEl.tagName()).arg(index);
else
part = currentEl.tagName();
pathElements.insert(0, part);
currentEl = elParent;
elParent = elParent.parent();
} while(!elParent.isNull());
//QString idSelector = tagName + "#" + id;
//.........这里部分代码省略.........
示例7: editorContextMenuRequested
void MainWindow::editorContextMenuRequested ( const QPoint & pos ) {
QString guid = getCurrentNoteGuid();
if (guid == "main")
return;
QWebHitTestResult element = ui->editor->page()->mainFrame()->hitTestContent(pos);
if (element.isNull())
return;
QStringList classes = allClasses(element.element());
if (classes.contains("pdfarea"))
return;
QMenu * menu = new QMenu(ui->editor);
menu->addAction(ui->editor->pageAction(QWebPage::SelectAll));
if (element.isContentSelected()) {
if (!menu->isEmpty())
menu->addSeparator();
menu->addAction(ui->editor->pageAction(QWebPage::Copy));
if (element.isContentEditable()) {
menu->addAction(ui->editor->pageAction(QWebPage::Cut));
menu->addAction(ui->editor->pageAction(QWebPage::Paste));
menu->addSeparator();
menu->addAction(ui->editor->pageAction(QWebPage::ToggleBold));
menu->addAction(ui->editor->pageAction(QWebPage::ToggleItalic));
menu->addAction(ui->editor->pageAction(QWebPage::ToggleUnderline));
}
}
if(!element.imageUrl().isEmpty() && (element.imageUrl().scheme() != "qrc")) {
if (!menu->isEmpty())
menu->addSeparator();
menu->addAction(ui->editor->pageAction(QWebPage::DownloadImageToDisk));
menu->addAction(ui->editor->pageAction(QWebPage::CopyImageToClipboard));
if (element.imageUrl().scheme() == "http" || element.imageUrl().scheme() == "https")
menu->addAction(ui->editor->pageAction(QWebPage::CopyImageUrlToClipboard));
QAction * openImage = new QAction(this);
openImage->setText("Open Image");
openImage->setObjectName("openImage");
menu->addAction(openImage);
if (JS("editMode").toBool()) {
menu->addSeparator();
QAction * deleteImage = new QAction(this);
deleteImage->setText("Delete Image");
deleteImage->setObjectName("deleteImage");
deleteImage->setIcon(QIcon::fromTheme("edit-delete"));
menu->addAction(deleteImage);
if (element.imageUrl().scheme() != "resource") {
QAction * saveLocally = new QAction(this);
saveLocally->setText("Save Locally");
saveLocally->setObjectName("saveLocally");
menu->addAction(saveLocally);
}
}
}
if (!element.linkUrl().isEmpty()) {
if (!menu->isEmpty())
menu->addSeparator();
menu->addAction(ui->editor->pageAction(QWebPage::CopyLinkToClipboard));
if (element.isContentEditable()) {
QAction * deleteURL = new QAction(this);
deleteURL->setText("Remove Link");
deleteURL->setObjectName("deleteURL");
menu->addAction(deleteURL);
}
}
if (element.isContentEditable() && !element.isContentSelected() && element.imageUrl().isEmpty()) {
Speller *speller = Speller::GetInstance();
if (speller->initialized()) {
QHash<QString, QString> languages = speller->availableLanguages();
if (!languages.isEmpty()) {
if (!menu->isEmpty())
menu->addSeparator();
QAction* act = menu->addAction(tr("Check &Spelling"));
act->setCheckable(true);
act->setChecked(speller->isEnabled());
connect(act, SIGNAL(triggered(bool)), speller, SLOT(setEnabled(bool)));
if (speller->isEnabled()) {
//.........这里部分代码省略.........
示例8: eventFilter
bool MyWebView::eventFilter(QObject *watched, QEvent *event)
{
if (!m_boolEnableEvtProcess) { return false; }
if (event->type() == QEvent::MouseMove)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
QWebView *view = dynamic_cast<QWebView*>(watched);
QPoint pos = view->mapFromGlobal(mouseEvent->globalPos());
QWebFrame *frame = view->page()->frameAt(mouseEvent->pos());
if (frame!=NULL)
{
QWebHitTestResult hitTestResult = frame->hitTestContent(pos);
// if the hovered elem is not the same as the previously hovered
if (hitTestResult.element() != m_old_hover_element)
{
QWebElement elemCurrent = hitTestResult.element();
// if dragging, overwrite with closer WContainer
if (m_boolIsDraggingWidget)
{
elemCurrent = FindCloserContainer(elemCurrent);
}
if (!elemCurrent.isNull())
{
// Change color
ChangeHoveredElemColor(elemCurrent);
// Message to print
m_strCurrentElemId = elemCurrent.attribute("id");
// Emit message
QStringList strlistClasses = elemCurrent.classes();
strlistClasses.removeAll(g_strHighlightClassName);
Q_EMIT mouseMovedOverElem(m_strCurrentElemId, strlistClasses.join(' '));
}
}
}
}
else if (event->type() == QEvent::MouseButtonPress)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
if (mouseEvent->button() == Qt::LeftButton)
{
QWebView *view = dynamic_cast<QWebView*>(watched);
QPoint pos = view->mapFromGlobal(mouseEvent->globalPos());
QWebFrame *frame = view->page()->frameAt(mouseEvent->pos());
if (frame != NULL)
{
QWebHitTestResult hitTestResult = frame->hitTestContent(pos);
QWebElement welemTemp = hitTestResult.element();
QWebElement elemCurrent = FindCloserWidget(welemTemp);
// if the clicked elem is not the same as the previously clicked
if (elemCurrent != m_old_click_element)
{
// Change color
ChangeClickedElemColor(elemCurrent);
// Message to print
m_strCurrentElemId = elemCurrent.attribute("id");
// Emit message
Q_EMIT mouseLeftClickedOverElem(m_strCurrentElemId);
}
}
}
}
return false;
}
示例9: findElement
void ClickToFlash::findElement()
{
if (!m_toolButton) {
return;
}
QWidget* parent = parentWidget();
QWebView* view = 0;
while (parent) {
if (QWebView* aView = qobject_cast<QWebView*>(parent)) {
view = aView;
break;
}
parent = parent->parentWidget();
}
if (!view) {
return;
}
QPoint objectPos = view->mapFromGlobal(m_toolButton->mapToGlobal(m_toolButton->pos()));
QWebFrame* objectFrame = view->page()->frameAt(objectPos);
QWebHitTestResult hitResult;
QWebElement hitElement;
if (objectFrame) {
hitResult = objectFrame->hitTestContent(objectPos);
hitElement = hitResult.element();
}
if (!hitElement.isNull() && (hitElement.tagName().compare("embed", Qt::CaseInsensitive) == 0 ||
hitElement.tagName().compare("object", Qt::CaseInsensitive) == 0)) {
m_element = hitElement;
return;
}
// HitTestResult failed, trying to find element by src
// attribute in elements at all frames on page (less accurate)
QList<QWebFrame*> frames;
frames.append(objectFrame);
m_mainFrame = view->page()->mainFrame();
frames.append(m_mainFrame);
while (!frames.isEmpty()) {
QWebFrame* frame = frames.takeFirst();
if (!frame) {
continue;
}
QWebElement docElement = frame->documentElement();
QWebElementCollection elements;
elements.append(docElement.findAll(QLatin1String("embed")));
elements.append(docElement.findAll(QLatin1String("object")));
foreach(const QWebElement & element, elements) {
if (!checkElement(element) && !checkUrlOnElement(element)) {
continue;
}
m_element = element;
return;
}
frames += frame->childFrames();
}
}
示例10: populateWebViewMenu
//.........这里部分代码省略.........
rx4.indexIn(view->url().toString());
for (int i = 1; i < 4; ++i) {
if (!rx4.cap(i).isEmpty()) {
videoId4 = rx4.cap(i);
break;
}
}
}
if (!videoId4.isEmpty()) {
QString videoPage4;
videoPage4 = "http://www.metacafe.com/watch/" + videoId4;
menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage4);
}
}
if (m_pagedm) {
QRegExp rx5("dailymotion.com/video/([a-z0-9]+_[^&]+)");
QString videoId5;
rx5.indexIn(r.linkUrl().toString());
for (int i = 1; i < 4; ++i) {
if (!rx5.cap(i).isEmpty()) {
videoId5 = rx5.cap(i);
break;
}
}
if (videoId5.isEmpty()) {
rx5.indexIn(view->url().toString());
for (int i = 1; i < 4; ++i) {
if (!rx5.cap(i).isEmpty()) {
videoId5 = rx5.cap(i);
break;
}
}
}
if (!videoId5.isEmpty()) {
QString videoPage5;
videoPage5 = "http://www.dailymotion.com/video/" + videoId5;
menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage5);
}
}
if (m_pagebr) {
QRegExp rx6("www.break.com/video/([^&]+)");
QString videoId6;
rx6.indexIn(r.linkUrl().toString());
for (int i = 1; i < 4; ++i) {
if (!rx6.cap(i).isEmpty()) {
videoId6 = rx6.cap(i);
break;
}
}
if (videoId6.isEmpty()) {
rx6.indexIn(view->url().toString());
for (int i = 1; i < 4; ++i) {
if (!rx6.cap(i).isEmpty()) {
videoId6 = rx6.cap(i);
break;
}
}
}
if (!videoId6.isEmpty()) {
QString videoPage6;
videoPage6 = "www.break.com/video/" + videoId6;
menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage6);
}
}
if (m_pagehu) {
QRegExp rx7("www.hulu.com/watch/([^d]+)");
QString videoId7;
rx7.indexIn(r.linkUrl().toString());
for (int i = 1; i < 4; ++i) {
if (!rx7.cap(i).isEmpty()) {
videoId7 = rx7.cap(i);
break;
}
}
if (videoId7.isEmpty()) {
rx7.indexIn(view->url().toString());
for (int i = 1; i < 4; ++i) {
if (!rx7.cap(i).isEmpty()) {
videoId7 = rx7.cap(i);
break;
}
}
}
if (!videoId7.isEmpty()) {
QString videoPage7;
videoPage7 = "http://www.hulu.com/watch/" + videoId7;
menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, SLOT(startExternalHandler()))->setData(videoPage7);
}
}
if (m_medel) {
if (r.element().tagName().toLower() == QLatin1String("video")
|| r.element().tagName().toLower() == QLatin1String("audio")) {
QUrl mediaLink = r.element().evaluateJavaScript("this.currentSrc").toUrl();
menu->addAction(QIcon(":/videoner/data/videoner.png"), tr("Videonize!"), this, (m_sepmedel ? SLOT(startExternalHandlerMed()) : SLOT(startExternalHandler())))->setData(mediaLink);
}
}
}