QWebView - QWidget: необходимо создать QApplication перед ошибкой QPaintDevice - PullRequest
1 голос
/ 20 января 2012

Всякий раз, когда я пытаюсь создать новый QWebView, ошибка после сборки -

QWidget: Must construct a QApplication before a QPaintDevice

почему это происходит?

Да, я добавил QT += webkit в pro-файл, и здесь написано

In qwtconfig.pri

CONFIG + = QwtDll эта строка должна быть ->

# CONFIG + = QwtDll

где находится qtwconfig.pri?

FWI Я нахожусь в статической сборке

Вот главная ()

#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 ]

1 голос
/ 21 января 2012

В документации упоминается, что Webkit может не работать как статическая библиотека.

Со страницы Замечания по платформе и компилятору Страница:

WebKit поддерживается только какдинамически создаваемая библиотека.Статическое связывание не поддерживается.

Попробуйте вместо него динамическое связывание.

0 голосов
/ 26 июня 2016

Другим источником этой ошибки может быть ссылка на неправильную версию библиотеки Qt - версию выпуска для отладочной сборки или наоборот.

0 голосов
/ 20 января 2012

Предполагая, что вы создаете QApplication, убедитесь, что вы не статически выделяете объект.

Не делайте этого

QWebView w;
int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  w.show();
  return a.exec();
}
0 голосов
/ 20 января 2012

Вам нужно создать экземпляр объекта QApplication, чтобы использовать любой класс, основанный на виджетах, и он должен быть создан первым, поэтому ваш main() должен выглядеть примерно так ...

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