2012-12-04 2 views
0

그냥 내가 위젯에서 웹 페이지를 볼 수있는 간단한 웹 뷰어 응용 프로그램을 만들려고 내가 오류가 점점 오전 :(QWebView)는 QWidget하십시오 QPaintDevice 전에의 QApplication을 구성해야

QWidget: Must construct a QApplication before a QPaintDevice 

내가 같은 느낌을 이것은 웹킷의 문제점입니까? 나는이 프로젝트를 정적으로 연결하고있다.

mainwindow.cpp

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include <QtGui> 
#include <QWebPage> 
#include <QtWebKit> 
#include "Windows.h" 

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

    QWebView *view = new QWebView(parent); 
     view->load(QUrl("http://google.com/")); 
     view->show(); 

} 

MainWindow::~MainWindow() 
{ 
    delete 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(); 
} 

.PRO 파일

QT  += core gui webkit network 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = webkittest 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

헤더 파일

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QWebView> 
#include <QUrl> 
#include <QtPlugin> 
#include <QGridLayout> 
#include <QSystemTrayIcon> 
#include <QMenu> 
#include <QMessageBox> 
#include <QDialog> 
#include <QtWebKit> 

class QAction; 
class QCheckBox; 
class QComboBox; 
class QGroupBox; 
class QLabel; 
class QLineEdit; 
class QMenu; 
class QPushButton; 
class QSpinBox; 
class QTextEdit; 


namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

protected: 
    //void closeEvent(QCloseEvent *event); 
    //void keyPressEvent(QKeyEvent *); 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

signals: 


private slots: 
     //void onSslErrors(QNetworkReply* reply, const QList<QSslError> &errors); 

private: 
    Ui::MainWindow *ui; 
    QWebView* m_pWebView; 

#endif // MAINWINDOW_H 

어떤 아이디어가 그 원인 일 수 있습니까?

+0

Qt를 어떻게 구성했는지에 따라 릴리스 모드에서 컴파일됩니다. – Kal

+0

어떤 Qt 버전입니까? –

+0

왜 "view-> show();"를 호출합니까? Mainwindow의 생성자에서? 웹뷰 위젯을 메인 윈도우에 넣어야한다고 생각합니다. 메인 윈도우에 레이아웃을 추가하고 레이아웃에 웹 뷰어를 추가하거나 웹 뷰어를 메인 윈도우의 중앙 위젯으로 설정하기 만하면 생성자에서 show() 메소드를 호출하지 않아도됩니다. – Gombat

답변

0

Qt 프레임 워크의 최신 버전을 설치하고 정적 링크를 사용하지 않도록 설정하여 웹킷을 동적으로 연결하여이 문제를 해결했습니다.

관련 문제