针对桌面的QML组件?

作者:Liang Qi | Mar 11, 2011 11:20:29 PM

原文链接:Jens Bache-Wiig - QML Components for Desktop?

在等待周围的一些事情冷却下来的过程中,我已经很开心地开发了一个新的研究项目。估计现在你们中的绝大多数都已经猜到是什么了,我将会从这个视频开始:

如果因为某些原因,YouTube不能播放,您可以看看这个很不错的截屏:

现在Qt Quick已经成为Nokia最近一段时间以来的主要焦点。我想看看我们是否可以把与QML一起工作的一些乐趣和快乐带到传统的桌面世界中。当然您可以很容易地让您的窗口部件和QML一起工作,但是显然不是每个人都想这么做。在我个人投入了一些时间研究Qt中GTK+和Vista的风格(style)之外,我还想证明我们甚至可以把这一部分成果应用于Qt Quick这个勇敢的新世界。

工作成果基本就是从零开始用QML写的一套新窗口部件。API主要来自于我们正在进行的移动SDK的工作成果,但是我也不得不创建一些特有的和桌面相关的窗口部件,例如滚动条(ScrollBar)、滚动区域(ScrollArea)以及标签框(TabFrame)。为了给您一个印象,实际中它是什么样子的,您可以像下面这样做:

Button {
id: button
text: "Push me"
onClicked: button.text = "Pressed"
}

作为内置的Flickable元素的一个替代,有一个ScrollArea组件可以根据您插入的内容暗中进行调整:

ScrollArea{
frame: false
Image {
source: "wave.jpg"
}
}

另外一个很棒的特性就是您可以根据平台创建所支持的桌面图标:

ToolButton{
iconSource: "image://desktoptheme/go-previous"
}

当然在此刻,您在Qt Quick中可以做的事情还是有一些局限。例如,您不能创建顶级窗口,因为所有的绘制都是在客户端一侧完成的。(尽管,我还在考虑把弹出菜单按真正的顶级窗口创建。)在实践中,您现在所得到的是一个可以替换您正在使用的.ui文件的具有很富有弹性的方案。

准备开始

不太幸运的是,我还没有能够使用这个框架编写一个合适的应用程序并且我希望能够有人有足够的勇气来尝试这个挑战。有一个要考虑的很重要的事情是这是一个实验室项目并且还没有被发布为任何会得到支持的形式。所以会有缺陷、崩溃、不完整的API、匮乏、战争以及没有文档等等情况。即便如此,我当然是欢迎任何反馈以及缺陷报告,如果您已经有了的话。:)

因为所有的这些都是以Qt的插件形式开发的,您准备开始所需要的一切就是Qt 4.7.2 SDK。只需要取得http://qt.gitorious.org/qt-components/desktop然后在您的系统中运行“qmake && make install”就可以了。

编辑

另外添加了截屏,显示了上面代码在KDE/OxygenMac上的结果。

另外特别注明,视频中动人的音乐是由我们自己亲爱的同事演奏的。:)