首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QML对Qt设计者还是纯代码?(在PyQt上下文中)

QML对Qt设计者还是纯代码?(在PyQt上下文中)
EN

Stack Overflow用户
提问于 2014-08-21 16:54:16
回答 4查看 5.3K关注 0票数 5

我是一个热衷于构建我的第一个严肃的GUI桌面应用程序的人,似乎Qt是最好的选择,所以我已经开始学习它,并且我发现,对于如何构建您的界面,似乎有三种选择:

  • QML
  • Qt设计者
  • 纯代码(仅限于python/C++)

现在,我试图找出这三种方法的功能是否存在差异。我和这三个人都有同等的控制力吗?优点和缺点是什么?

此外,我还有多少控制权呢?我是否可以很好地定制UI,比如Spotify界面,其中几乎所有东西都是唯一的自定义小部件?或者说,我是否或多或少地被“开箱即用”的外表所困扰?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-21 17:49:00

我使用PyQt已经有一段时间了(4+年),我更喜欢为简单的应用程序编写UI;但是,否则,我使用Qt设计器。使用PyQt,您可以将设计器生成的.ui文件转换为.py文件,因此,如果某些事情不完全符合您的喜好,则可以始终在代码中重写它(例如重写QWidgets等)。

至于用漂亮的UI编写应用程序..。虽然我不确定它的支持范围有多广,但Qt确实采用CSS来进行样式设计。QML是这个领域的新成员,虽然我还没有研究过它,但我看了一些示例,所有的应用程序看起来都很漂亮,编写起来也很简单--正如您可能知道的,它有JavaScript风格的语法,我相信Spotify是用JS编写的(尽管我可能完全错了)。

例如,如果您是Windows开发人员,我认为“常规”Qt的方式有点像Windows窗体和Windows 8的XAML/Windows应用程序。

简而言之:是的,您可以极大地定制Qt应用程序的“外观‘n’感觉”,但我不确定这与例如QML相比有多容易。

票数 3
EN

Stack Overflow用户

发布于 2014-08-23 07:16:15

我通常使用Qt设计器来生成UI。有相当数量的选项可用,它使您大致了解您的UI将是什么样子。

但是,与其将.ui文件编译成.py文件(可以是子类),我更喜欢在运行时使用PyQt4.uicPySide.QtUiTools动态加载ui。使用这些函数,您可以调用一个函数,将它的路径传递给ui文件,它将返回顶级小部件/窗口的一个对象(为了下一个示例,我们将把它放在my_ui中)。该对象具有所有其他ui元素的属性,您可以通过my_ui.my_object_name访问这些属性,其中my_object_name是您在Qt设计器中指定的ui元素的名称。

使用这种方法意味着:

  • 不必将ui文件编译成py文件
  • 仍然可以使用pythonic接口访问ui中的所有小部件,使您能够配置这些小部件,就像您用纯代码创建它们一样。

Qt还能够指定小部件升级,因此您可以在ui中插入一个基本的QLabel (例如),但是当加载它时,它可以自动提升到您已经创建和指定的QLabel子类中。因此,您可以在Qt设计器中设计UI的粗略形状,但在运行时很容易将大多数组件提升到自定义小部件。

由于与.ui文件加载器在PySide和PyQt中的不同接口,我将它们封装为我维护的库(二元组)的一部分,以便它们有一个用于在运行时加载ui文件和指定小部件升级的公共接口。

我也没有任何使用QML的经验,但根据我所听到的,它还不如使用QWidgets那么强大。然而,我认为正在编写/开发Qt库的人正在将QML作为未来的一种方式。

因此,我的建议是使用Qt设计器而不是纯代码,但如果QML为您想要的做了足够多的工作,那么它是值得检查的。

票数 6
EN

Stack Overflow用户

发布于 2014-08-23 13:47:22

在我的解释中,在你掌握了布局之后--纯粹的代码。项目中没有子类、多重继承和其他文件的麻烦。您可以很容易地创建helpers\专用类,从而使GUI的构建变得非常简单。事实上,我认为这是一种常见的方法--使用Qt设计器来简化学习曲线,然后切换到纯代码。我的两分钱,YMMV。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25431793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档