3

我已将 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!");
 }

Web 检查器显示空白屏幕

4

1 回答 1

3

改成

QWebInspector *inspector = new QWebInspector();
inspector->show();

并且不要忘记调用删除

于 2012-12-04T17:52:53.723 回答