【Qt】Qt QWebEngineView 快捷鍵功能實現

一、需求:

 對於Qt 通過QWebEngineView 實現快捷鍵F12打開Web調試窗口。

二、方法:

      方法一:QWebEngineView ::addAction(QAction);   QAction::setShortcut(QKeySequence)

     方法二:1、new QShortcut      2、QObject::connect(shortcut, &QShortcut::activated ....

     方法三:1、new QMenu  2、new QAction  3、QMenu::addAction()    4、new QMenuBar  5、 QMenuBar::addMenu()  6、 QMainWindow::setMenuBar(QMenuBar *)

三、代碼:

#include <QtWidgets/QApplication>
#include <QWebEngineView>
#include <QWebEnginePage>
#include <QShortcut>
#include <QObject>
#include <QKeySequence>
#include <QAction>

QWebEngineView* setPageInspectElementShortCut(QWebEngineView* pWebEngineView, QKeySequence &keySequent,const QString qstrActionName = QString() ) {
	if (!pWebEngineView || keySequent.isEmpty())
	{
		return nullptr;
	}

	QAction *pAction = new QAction(qstrActionName, pWebEngineView);
	pAction->setShortcut(keySequent);
	QWebEngineView *m_pNewView;
	QObject::connect(pAction, &QAction::triggered, [pWebEngineView, m_pNewView]()mutable {
		m_pNewView = new QWebEngineView();
		pWebEngineView->page()->setDevToolsPage(m_pNewView->page());
		pWebEngineView->page()->triggerAction(QWebEnginePage::InspectElement);
		m_pNewView->show();
	});
	pWebEngineView->addAction(pAction);

	return m_pNewView;
}
QWebEngineView* setPageInspectElementShortCut2(QWebEngineView* pWebEngineView, QKeySequence &keySequent) {
	if (!pWebEngineView || keySequent.isEmpty())
	{
		return nullptr;
	}

	QShortcut* shortcut = new QShortcut((keySequent), pWebEngineView);
	//int nShortcutId = shortcut->id(); 
	//m_pWebView->setShortcutEnabled(nShortcutId,true);  不用添加也可以
	QWebEngineView *m_pNewView;
	QObject::connect(shortcut, &QShortcut::activated, pWebEngineView, [pWebEngineView, m_pNewView]()mutable {
		m_pNewView = new QWebEngineView();
		pWebEngineView->page()->setDevToolsPage(m_pNewView->page());
		pWebEngineView->page()->triggerAction(QWebEnginePage::InspectElement);
		m_pNewView->show();
	});
	return m_pNewView;
}
int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QWebEngineView *m_pWebView = new QWebEngineView();
	m_pWebView->setUrl(QStringLiteral("https://www.baidu.com"));
	m_pWebView->show();
	
	// 方法一:pWebEngineView->addAction(pAction);
	// QWebEngineView *pInsEleView = setPageInspectElementShortCut(m_pWebView, QKeySequence(Qt::Key_F12));
	//對調試的那個窗口的view在自行處理。

	// 方法二: 1、new QShortcut  2、QObject::connect(shortcut, &QShortcut::activated ....
	QWebEngineView *pInsEleView = setPageInspectElementShortCut2(m_pWebView, QKeySequence(Qt::Key_F12));
	
	return a.exec();
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章