【问题标题】:Howto open html page in default browser, when html code is stored in QString当html代码存储在QString中时,如何在默认浏览器中打开html页面
【发布时间】:2012-10-21 16:33:21
【问题描述】:

我的 Qt 应用程序应该打开一个 html 页面(使用默认浏览器,例如 IE)。此 html 代码存储在 QString 中。

打开这个“文件”的最佳方式是什么,我只有其中的内容?

QTemporaryFile 是这个问题的答案吗?或者这可以更容易地完成吗?

QString content = "<html>...</html>";
?
QDesktopServices::openUrl(QUrl("..."));

【问题讨论】:

  • 为什么不想使用Qt Webkit 在应用程序中打开页面?
  • 我要显示的网页包含很多复杂的重定向、下载等。使用默认浏览器会容易得多,这样用户就可以使用他们熟悉的环境。

标签: c++ qt temporary-files


【解决方案1】:

到目前为止,QTemporaryFile 方法是最容易完成任务的。

除了用 ActiveQt 做一些“伏都教”之外,我没有看到任何其他方法,如果这有效的话。

最好的问候。

编辑:一个例子

QString htmlData; // your HTML data here

// The six Xs are actually required.
QTemporaryFile tmpFile( QLatin1String( "thefileXXXXXX.html" ) );
tmpFile.open();
QTextStream out( &tmpFile )
out << htmlData;
tmpFile.close();
QDesktopServives::openUrl( QUrl::fromLocalFile( tmpFile.fileName() ) );

【讨论】:

  • 谢谢!你知道如何用这个 QString 的内容生成一个临时文件吗?它应该具有扩展名“.html”。网上只有几个 QTemporaryFile 的例子,我不了解它的基础知识:s
  • 你试过了吗?恐怕不行,因为QTemporaryFile::closedoes not work
  • @DariuszScharsig,问题是文件可能被锁定,QDesktopServives 将无法打开它,而它仍然被QTemporaryFile 打开。当QTemporaryFile被销毁时,文件也会被删除。
  • 是的,但它没有被阻止。 QTemporaryFile::close() 调用 QFile::close() 并刷新文件,浏览器可以访问它,因为无论如何它都是只读访问。即使文件被删除,浏览器也会显示它的内容。如前所述,我已经尝试过了。像魅力一样工作。
  • @DariuszScharsig,你打开链接了吗?
猜你喜欢
  • 1970-01-01
  • 2011-03-11
  • 2023-03-26
  • 1970-01-01
  • 2013-12-22
  • 2013-12-26
  • 1970-01-01
  • 2014-07-10
  • 2014-12-21
相关资源
最近更新 更多