Создание / уничтожение QApplication приводит к тому, что QWebView портит рендеринг HTML - PullRequest
1 голос
/ 09 апреля 2010

Нам нужно создавать и уничтожать экземпляры QApplication, так как мы хотим использовать Qt в плагине для существующего хост-приложения.

void multiQT()
{
    int argc = 0;
    QApplication app(argc, NULL);

    QWebView view;
    view.setHtml("<html><head><title>Title</title></head><body><h1>Hello World</h1></body></html>");
    view.show();

    app.exec();
}


main(int argc, char** argv)
{
    // First call works fine, QWebView renders the HTML just fine
    multiQT();

    // Second call fails, QWebView strips HTML tags from HTML text and 
    // and renders "TitleHello World"
 multiQT();
}

При отображении QWebView во второй раз, он не отображает HTML должным образом. Нужно ли нам делать некоторые дополнительные (ре) инициализации в QApplication или QWebView?

Ответы [ 2 ]

1 голос
/ 09 апреля 2010

Возможно, вы столкнулись с чем-то, что было очень легко протестировано, объект QApplication, среди прочего, создает / хранит некоторую контекстную информацию рендеринга виджетов, я не думаю, что когда-либо планировалось, чтобы люди ее снимали и помещали это резервное копирование снова. Возможно, имеется некоторый статический контент, который неправильно инициализируется, когда кто-то пытается выполнить то, что вы пытаетесь сделать.

0 голосов
/ 09 апреля 2010

Предполагается, что у вас есть только 1 объект QApplication и только 1 вызов exec(). Может, тебе стоит попробовать это?

QWebView * multiQT()
{
    QWebView *view = new QWebView;
    view->setHtml("<html><head><title>Title</title></head><body><h1>Hello World</h1></body></html>");
    view->show();

    return view;
}

main(int argc, char** argv)
{
    QApplication app(argc, NULL);

    QWebView * web0 = multiQT();

    QWebView * web1 = multiQT();

    app.exec();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...