【问题标题】:How to get a system's default browser?如何获取系统的默认浏览器?
【发布时间】:2016-08-15 11:50:14
【问题描述】:

有Qt接口获取系统默认浏览器吗?

我想在浏览器中显式打开一个file:// url 而不是系统的默认应用程序,所以QDesktopServices::openUrl 不是因为

如果 URL 是对本地文件的引用(即 URL 方案是“文件”),那么它将使用合适的应用程序而不是 Web 浏览器打开。

【问题讨论】:

  • 您不应该真正超越系统设置。你为什么要强迫你的手在那里?你在说什么类型的文件?
  • 一个许可文件 (.html),不应在任何类型的 IDE 或文本编辑器中打开,而应进行渲染。
  • 好吧,如果用户决定设置一个 IDE 来打开 html 文件,那么这是她的问题,我会说... HTML 内容是否在您的控制之下?您可以使其“足够简单”以由 QTextBrowser 呈现。 (或者全力以赴,将 WebKit/Chromium 与您的应用一起发布)。
  • 是的,我生成并发送了 .html。如有必要,我也可以将其更改为 PDF。关键是,用户永远不会得到文件。因此,这不是“用户使用首选应用程序打开文件”操作,而是“显示许可证”操作。因此,文件格式是与用户无关的实现细节。 QTextBrowser 是一个选项,是的。其他文件格式也是如此。本地 HTTP 服务器也是。但这并不能回答问题。我不敢相信在浏览器中打开东西这么难。
  • 因为这几乎不是要求。如果您愿意,只需处理一小部分特定于平台的代码。在FDG-complaint桌面下,可以调用x-www-browser;我不知道 Windows 或 macOS。

标签: qt qt5 qdesktopservices


【解决方案1】:

对于您的特定应用程序,您应该使用 Qt 附带的 Web 引擎:

QWebEngineView *view = new QWebEngineView{parent};
view->load(QUrl{"file://...."});
view->setWindowFlags(Qt::Window);
view->setAttribute(Qt::WA_DeleteOnClose);
view->show();

如果html足够简单,使用文本浏览器:

QTextBrowser *view = new QTextBrowser{parent};
view->setSource(Qurl{"file://...."});
view->setWindowFlags(Qt::Window);
view->setAttribute(Qt::WA_DeleteOnClose);
view->show();

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 2013-05-18
    • 1970-01-01
    • 2011-09-27
    • 2020-06-30
    • 2023-03-28
    • 2013-05-12
    • 2014-08-11
    相关资源
    最近更新 更多