QWebView - QWidget:必须在QPaintDevice错误之前构造QApplication

时间:2012-01-20 03:42:43

标签: qt qwidget qwebview

每当我尝试创建新的QWebView时,构建后的错误都是

QWidget: Must construct a QApplication before a QPaintDevice

为什么会这样?

是的,我确实在专业文件中添加了QT += webkit,并在此处说明了

在qwtconfig.pri

CONFIG + = QwtDll这一行必须是 - >

#CONFIG + = QwtDll

qtwconfig.pri在哪里?

FWI我正在进行静态构建

这是main()

#include "MyWidget.h"
#include <QPlastiqueStyle>
#include <QtPlugin>
#include <QtWebKit/QWebView>
Q_IMPORT_PLUGIN(qico)


int main(int argc, char *argv[])
{

QApplication app(argc, argv);

app.setStyle(new QPlastiqueStyle);
app.setFont(QFont("Calibri"));
MyWidget widget;
widget.show();

QWebView w;
    w.show();

return app.exec();

}

4 个答案:

答案 0 :(得分:1)

文档中提到Webkit可能无法用作静态库。

来自Platform and Compiler Notes页面:

  

WebKit仅作为动态构建的库提供支持。不支持静态链接。

尝试动态链接。

答案 1 :(得分:0)

您需要实例化QApplication对象才能使用任何基于窗口小部件的类,并且必须先创建它,因此您的main()看起来应该是这样的。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWebView w;
    w.show();    
    return a.exec();
}

答案 2 :(得分:0)

假设您正在创建QApplication,请确保您没有静态分配对象。

不要这样做

QWebView w;
int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  w.show();
  return a.exec();
}

答案 3 :(得分:0)

此错误的另一个来源可能是链接到Qt库的错误版本 - 调试版本的发行版本,反之亦然。