2013-05-02 8 views
3

Я создал приложение Qt 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

+0

@ user2341549, я отредактировал свой ответ. –

+0

Спасибо! Очень признателен. – user2341549

Смежные вопросы