我们需要创造&销毁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中进行一些额外的(重新)初始化?
答案 0 :(得分:1)
你可能遇到过一些经过非常轻微测试的东西,其中QApplication对象创建/保存了一些小部件的渲染上下文信息,我认为人们没有计划将它取下并放入它再次备份。可能有一些静态内容在有人尝试您尝试的操作时无法正确重新初始化。
答案 1 :(得分:0)
您应该只有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();
}