4

您在使用 Web 技术(HTML、XML、CSS、JavaScript)实现 GUI 应用程序的部分功能方面有何经验?利弊,请。

没有用于会话管理的服务器、关系数据库、AJAX 或 cookie,也没有现有的 web 应用程序,而是一个使用 web 小部件(如Qt WebKit)来呈现和处理 UI 的重要部分的 GUI 应用程序,同时利用 GUI框架以实现更丰富的交互和更好的桌面集成。

我已经验证了该方法可以使用 PyQt。内容可以从文件系统或字符串呈现,并且 URL 请求(图像或点击)可以被表单的事件处理程序捕获和服务。支持 CSS 和 JavaScript,可能有一些限制。

        # ...
        self.webView.page().setLinkDelegationPolicy(
            QtWebKit.QWebPage.DelegateExternalLinks
            )
        #... 

class TotiMainWindow(QtGui.QMainWindow):
    def linkClicked(self, url):
        pass # events arrive here

注意:这个问题与这个问题和这个问题不同其他外,因为没有要求在 GUI 上使用 Web 技术,但要求应用程序应该在没有可用网络连接的情况下工作,并且应该集成与不同平台上的默认桌面很好,没有以前的基础设施要求(没有 .NET、Java、浏览器或数据库服务器)。

注意:我在 PMS 上发布了这个问题的不同版本,但在那里发现这种方法的经验很少。

结束语

我刚刚在André Pareis 的一系列博客文章中找到了我正在寻找的大部分信息。

4

5 回答 5

4

我认为使用 HTML/CSS 和其他 Web 技术等 Web 标记的最大优势是桌面应用程序的日子可能已经屈指可数了。

正如我们所说,谷歌工程师正在开发 Chromium OS,它基本上由一个 GUI 应用程序组成……浏览器……

现在,虽然可能永远不会真正实现它,但通过 Web 浏览器访问的应用程序数量明显呈上升趋势,可在任何地方访问。在我看来,这是应用程序开发的未来。

通过使用这些技术,当您确定您的应用程序应该作为 Web 应用程序可用时,您必须处理的麻烦就少了。

更新:几年前,我们为我们的呼叫中心开发了一个代理桌面,它本质上是一个本地应用程序,它打开套接字以与电话系统集成。代理使用的用户界面是用 HTML、CSS 和 JavaScript 构建的,体验令人惊叹。当我们在 2010 年通过专业的 CSS 重新设计发布最新更新时,我们的代理都对它的交互简单性和易用性印象深刻。

未来我们会将此 100% 移植到浏览器上,但由于 COM 与电话系统的集成,现在它需要成为本地应用程序。

于 2011-01-06T01:11:18.390 回答
2

当 Windows XP 还是新的时候,我们正是为一个项目做的。

这给我的团队带来了几个好处:

  • 一个好看的用户界面,工作量相对较小
  • 使用 CSS 以一致的方式轻松更改 UI 的样式
  • 与 C++ 的相对简单的集成(从 ui 调用函数,反之亦然)

我们看到的缺点是:

  • 一些不太好的防火墙将访问内部资源(即 ui 中的其他 html 页面)视为 Web 请求
  • 在某些情况下,添加和访问所需资源可能有点麻烦
  • 可能在 Internet Explorer 中设置属性会阻止 JS 在应用程序中运行

请注意,某些 Windows XP:s 程序正在使用这种方法。

这可能最适用于 ui 中更小的、更像向导的部分(我们的 ui 几乎完全由这些部分组成)。

从那以后我就没有真正参与过 ui 项目,所以我不能真正告诉你这种方法是否仍然有效……我知道基于 MFC 的应用程序将允许你使用基于 HTML 的对话框。

于 2011-01-14T16:24:45.363 回答
1

在 2005 年的类似情况下,我使用 XForms、CSS、JavaScript、XML 和 XML Schema 创建了一个独立的 web 应用程序,用于离线数据检索和验证。凭借良好的 XForms -> HTML + JS 转换器 (Chiba),它完成了这项工作,并且在初始版本之后没有修复任何错误。大约十几名工程师在大型强子对撞机隧道中收集测试数据的项目中使用了 6-12 个月 (IIRC)。该项目最大的惊喜是你在使用网络平台时免费获得了多少,即使是离线使用也是如此。强烈推荐。

于 2011-01-13T16:28:21.863 回答
0

主要问题是它会降低您的开发速度或用户界面的质量。很多。除非您使用 Seaside,否则开发桌面应用程序要快得多。

于 2011-01-14T16:03:56.397 回答
0

有相当多的应用程序构建在 Mozilla 平台之上。它不是 100% 的 Web 技术,因为您使用基于 XML 的XUL而不是 HTML ,但其余部分确实是 Web 堆栈(JavaScript、CSS)。其中最成功的是OpenKomodo和它的商业大哥Komodo IDE

另一方面,就 Qt 而言,最新版本 4.7 您可以使用QML语言构建 GUI。不要让名称误导您,它不是标记,它实际上是带有特定于应用程序扩展的 JavaScript。

于 2011-01-14T16:07:05.560 回答