我已将 QWebInspector 包含在我的 QT 项目中并尝试在我的代码中使用它(不完全确定如何,因为我对 QT 还是很陌生)我得到一个空白的 Web Inspector 屏幕,所以我认为 page() 返回 null?我哪里出错了,或者这仅适用于 HTML5 应用程序?
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
#include <QSsl>
#include <QSslError>
#include <QNetworkReply>
#include <QtDebug>
#include <QWebInspector>
#include <QGraphicsWebView>
#include <QMessageBox>
#include "Windows.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//this->setGeometry(50,50, 1280, 768);
setWindowState(Qt::WindowMaximized);
//MainWindow::showMaximized();
this->centralWidget()->setLayout(new QGridLayout);
m_pWebView = new QWebView(this);
//Detect any SSL errors from the network reply
connect(m_pWebView->page()->networkAccessManager(), SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError> & )),
this, SLOT(onSslErrors(QNetworkReply*, const QList<QSslError> & )));
this->centralWidget()->layout()->addWidget(m_pWebView);
//set position and size
m_pWebView->load(QUrl("https://csm.nathan"));
//m_pWebView->show();
QMenu *trayIconMenu;
minimizeAction = new QAction("Minimize", this);
restoreAction = new QAction("Restore", this);
quitAction = new QAction("Exit", this);
connect (minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));
connect (restoreAction, SIGNAL(triggered()),this,SLOT(showMaximized()));
connect (quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
trayIconMenu = new QMenu(this);
trayIconMenu->addAction (minimizeAction);
trayIconMenu->addAction (restoreAction);
trayIconMenu->addAction (quitAction);
QSystemTrayIcon* systray = new QSystemTrayIcon(this);
//connect(systray, SIGNAL(messageClicked()), this, SLOT(messageClicked()));
QIcon icon("csm-logo.png");
systray->setIcon(icon);
systray->setContextMenu (trayIconMenu);
systray->show();
if(systray->isVisible()){
systray->showMessage("CytoViewer v1.0", "The CytoViewer has been started!", QSystemTrayIcon::NoIcon, 10000);
//QMessageBox msgBox;
//msgBox.setWindowTitle("HELP");
//msgBox.setInformativeText(m_pWebView->page());
//msgBox.exec();
//Enable developer extras in the webviewer settings
m_pWebView->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
//Instantiate QWebInspector
QWebInspector inspector;
inspector.setPage(m_pWebView->page());
inspector.setVisible(false);
}
}
void MainWindow::onSslErrors(QNetworkReply* reply, const QList<QSslError> &errors)
{
qDebug() << "handleSslErrors: ";
foreach (QSslError e, errors)
{
qDebug() << "ssl error: " << e;
}
//Suppress any SSL errors
reply->ignoreSslErrors();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::closeEvent(QCloseEvent *event)
{
QMessageBox::information(this, tr("Systray"),
tr("The program will keep running in the "
"system tray. To terminate the program, "
"choose <b>Exit</b> in the context menu "
"of the system tray entry."));
hide();
event->ignore();
}
void MainWindow::messageClicked()
{
QMessageBox::information(0, "CytoViewer Message", "You're application is up and running!");
}