2013-05-02 113 views
3

我已經創建了一個Qt GUI應用程序,但我沒有觸及任何關於GUI的東西。我修改了mainwindow.cpp和項目文件。使用QWebPage獲取運行時錯誤

mainwindow.cpp:

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include <QWebPage> 
#include <QWebFrame> 

QWebPage page; 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    connect(page.mainFrame(), SIGNAL(loadFinished(bool)), this, SLOT(pageLoaded1(bool))); 
    QUrl router("http://192.168.1.1"); 
    page.mainFrame()->load(router); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

untitled.pro:

#------------------------------------------------- 
# 
# Project created by QtCreator 2013-05-01T23:48:00 
# 
#------------------------------------------------- 

QT  += core gui webkit webkitwidgets 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = untitled 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

main.cpp中:

#include "mainwindow.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

錯誤:

--------------------------- 
Microsoft Visual C++ Debug Library 
--------------------------- 
Debug Error! 

Program: ...tled-Desktop_Qt_5_0_2_MSVC2010_32bit-Debug\debug\untitled.exe 
Module: 5.0.2 
File: global\qglobal.cpp 
Line: 1977 

ASSERT: "!"No style available without QApplication!"" in file kernel\qapplication.cpp, line 962 

(Press Retry to debug the application) 
--------------------------- 
Abort Retry Ignore 
--------------------------- 

此處插入額外的字符以繞過字符要求。

回答

1

main.cpp,請確保您創建一個應用程序對象,即使你不直接使用:

QApplication app; 

// Below you can then create the window 

編輯

的問題是,你正在創建一個QWebPage作爲全球對象,並且在創建QApplication之前。要解決該問題,請將該頁面設爲MainWindow類的成員。也使頁面成爲一個指針,否則你會得到其他問題。

即在mainwindow.h

private: 

    QWebPage* page; 

mainwindow.cpp

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include <QWebPage> 
#include <QWebFrame> 

// Remove this!! 
// QWebPage page; 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    // Create the page here: 
    page = new QWebPage(this); 

    connect(page.mainFrame(), SIGNAL(loadFinished(bool)), this, SLOT(pageLoaded1(bool))); 
    QUrl router("http://192.168.1.1"); 
    page.mainFrame()->load(router); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 
+0

我有一個已經。我會發布main.cpp – user2341549 2013-05-02 03:56:48

+0

@ user2341549,我已經編輯了我的答案。 – 2013-05-02 06:30:16

+0

謝謝!非常感激。 – user2341549 2013-05-02 22:39:44