GUI应用程序中的Web技术

时间:2011-01-06 01:04:48

标签: user-interface qtwebkit

您使用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

注意:此问题与之前制作的this onethis one不同,其中包括因为不需要在GUI上使用Web技术,但是要求应用程序应该在没有可用网络连接的情况下工作,并且应该与不同平台上的默认桌面很好地集成,而不需要先前的基础结构要求(没有.NET,Java,浏览器或数据库服务器)。

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

结束注释

我刚刚在一系列blog posts by André Pareis中找到了我要查找的大部分信息。

5 个答案:

答案 0 :(得分:4)

我认为使用HTML / CSS和其他网络技术等网络标记的最大优势在于,桌面应用程序很可能会有自己的日期。

正如我们所说,Google工程师正在研究Chromium OS,它基本上由一个GUI应用程序组成......浏览器......

现在,虽然实际上没有任何东西可以实现,但通过网络浏览器可以访问的应用程序数量显然呈上升趋势,可随时随地访问。在我看来,这是应用程序开发的未来。

通过使用这些技术,当您确定应用程序应该作为Web应用程序提供时,您可以轻松解决此问题。

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

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

答案 1 :(得分:2)

当Windows XP是新的时,我们为一个项目做了这个。

这为我的团队带来了好处:

  • 一个外观漂亮,用户不费吹灰之力
  • 使用CSS
  • 以一致的方式轻松更改UI的样式
  • 与C ++相对简单的集成(从ui调用函数,反之亦然)

我们看到的缺点是:

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

请注意,某些Windows XP程序正在使用此方法。

这可能最适合用于ui的小型,更像向导的部分(我们的ui几乎完全包含在内)。

从那时起我就没有真正参与过ui项目,所以我无法真正告诉你这种方法是否仍然有效......我知道基于MFC的应用程序会让你使用基于HTML的对话框。

答案 2 :(得分:1)

在2005年的类似情况中,我使用XForms,CSS,JavaScript,XML和XML Schema为离线数据检索和验证创建了一个独立的webapp。有了很好的XForms - > HTML + JS转换器(千叶)它完成了这项工作,在初始发布后没有修复错误。在大型强子对撞机的隧道中收集测试数据的项目大约有十几位工程师使用了6-12个月(IIRC)。该项目最大的惊喜就是你在使用网络平台时获得的免费费用,即使是在线下使用也是如此。强烈推荐。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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