Qt 5关于QT/QML和窗口小部件定制的常见问题

3

我是一名iOS/Cocoa开发者,想将我的一个应用程序移植到PC平台。我不想编写多平台代码并维护一个应用程序。我将继续在iOS Mac开发中使用Cocoa和Cocoa Touch。

我选择在PC上使用QT 5,我不确定这是否明智的选择,但它很容易理解C++。如果不是,请指向正确的方向。

我的应用程序并不是非常复杂,但需要一些特殊定制,例如外观类似于iOS的Table View的ListView,使用具有Twitter Bootstrap样式搜索框的自定义圆角窗口,并且我想监视一些全局操作系统事件,如按键以及用户当前正在使用的其他应用程序。我还使用SQLite和AES加密。

我的问题涉及UI定制。

  1. 我应该开始学习并使用QML吗?我不确定它是什么,看起来像极了简单的CSS,但我有一种感觉它更适用于嵌入式设备而且有一些限制...

  2. 如果我使用QML,我能否访问QT的所有功能?

  3. 除了使用QML以外,我还有哪些选项来自定义小部件(例如,在Objective C中,我们使用子类化和绘制我们想要的任何内容或处理事件...)?

  4. 我在Windows平台上没有经验。我应该使用VisualStudio C++而不是QT5吗?由于所有权的变化,我感到有些不安全。


你应该尝试把这些问题分成不同的提问。在一个帖子中问多个问题是不被赞同的。也许除了第四个问题,因为这个问题太具争议性,不是一个好问题。 - cgmb
顺便说一句,Qt Quick(QML)非常棒,但是对于桌面应用程序的支持还不够成熟。Qt Widgets 将提供你需要的功能,而且我认为你会发现它们更容易学习。至少就目前而言是这样的。Qt Quick 正在迅速改进中。 - cgmb
感谢您的评论。除了第四个问题是通用性的,我的所有问题都是关于小部件定制的方法。我不确定为什么需要针对同一主题提出不同的问题。 - Nimrod7
@BillKast 您的一些问题可以在http://qt-project.org/wiki/Qt_Quick找到。 - UmNyobe
2个回答

6
  1. 是的,你应该选择QML。QML 是一个声明性语言,它允许在其中执行 JavaScript,并且你几乎可以使用 QML 来完成任何 UI 相关的任务。如果你没有某个特定的 UI 元素,你可以用纯 C++(Qt) 来绘制它并在 QML 中使用它。因此,QML 是目前 Qt 开发的最佳选择。不过它并不像 CSS,它要更加强大。
  2. 是的,你拥有 Qt 的所有能力,以及声明性语言可能提供的额外功能——简化 UI 开发流程和现代化的 UI&logic 分解。
  3. 纯 C++ Qt 中也有这个选项,你可以子类化小部件(widget),重新绘制它们,改变行为等等。但这种方法比 QML 差一些。
  4. 这个观点是毫无意义的。有些人认为 Visual C++ 像是一种独立的语言,这是错误的。你可以将 Visual C++ 看作 C++ 再加上微软编译器所拥有的一些小扩展。但把它称为 GCC C++ 也是荒谬的。因此,如果你使用 Qt 集成插件在 Visual Studio 中开发,就完全不会出现问题。或者你可以选择人们普遍认为比 MSVS 更优秀的 Qt Creator。选择权在你手中,但对于新手来说,使用 Qt Creator 来编写 Qt 程序要简单得多。但请注意,你需要一个编译器,因为 Qt Creator 只是一个 IDE,它需要使用一些第三方编译器(无论是 MS 还是 GNU 的)。

@UmNyobe,您能详细阐述一下您的观点吗? - ixSci
@UmNyobe,这篇文章没有展示任何东西。是的,确实缺少一些官方的可直接使用的组件。但是a)有很多非官方的组件可用;b)您可以创建任何您需要的组件。 - ixSci
你也没有任何支持你说法的东西。任何非官方的内容都是非标准的,因此无论是qml还是C++都不能算数。 - UmNyobe

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接