用QML开发MeeGo应用程序

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

什么是QML

QML是一种描述应用程序UI的声明式语言,包括应用程序的外观(菜单、按钮、布局等)以及行为(点击事件)的描述。在QML中,UI界面被描述成一种树状的带属性对象的结构(类似于DOM)

JavaScript JavaScript: The Definitive Guide )。如果对HTML和CSS等Web技术有所理解是会有帮助的,但不是必需的。

上面是官方介绍的前两段,具体中文教程可以看看Qt技术分享博客的系列教程 ,QML实际上是Qt Quick (Qt4.7.0中的新特性)核心组件之一:Qt Quick是一组旨在帮助开发者创建在移动电话,媒体播放器,机顶盒和其他便携设备上使用越来越多的直观、现代、流畅UI的工具集合。Qt Quick包括一组丰富的用户界面元素,一种用于描述用户界面的声明性语言(QML)及运行时,一组用于将这些高层次特性集成到经典的Qt应用程序的 C++ API。

从官方的介绍可以看出,Qt Quick是为移动平台快速开发所量身打造的,先看一个实际例子:在MeeGo上运行的MeeNotes,除了业务逻辑,界面UI都是使用QML实现的

                                         MeeNotes运行效果

                                         横竖屏幕切换(点击那个星号~)

                                         在模拟器中运行效果

MeeNotes可以在这里 找到:使用git把& lt;font color="#ff0000">qt-components和meenotes clone 下来,然后先编译qt-components,这个依赖于qt4.7,是使用QML快速开发meego应用程序的关键,它实现了一套meego的QML Module,之后可以编译运行下MeeNotes,如果运行不了,请检查Qt安装目录里是否有 com.nokia.meego这个module(我的位于/usr/local/Trolltech/Qt-4.7.0/imports/com /meego)如果没有,则需要在qt-components解压目录下的 src/MeeGo 手动执行qmake/make/make install,进行编译安装。

简单看看MeeNotes下的实际代码

src目录下的src.pro ,红色部分即是与使用libmeegotouch开发所不同之处 :

TEMPLATE = app
TARGET = ../MeeNotes
LIBS += -lQtComponents
HEADERS += models/meenotesmodel.h /
          models/notemodel.h
SOURCES += main.cpp /
          models/meenotesmodel.cpp /
          models/notemodel.cpp
QT += declarative


再看主入口main.cpp:

#include "models/meenotesmodel.h"
#include <QApplication>
#include <QDeclarativeContext>
#include <QDeclarativeComponent>
#include <QDir>
#include <QtComponents/qdeclarativewindow.h>
int main(int argc, char **argv)
{
        QApplication app(argc, argv); 
        app.setApplicationName("MeeNotes");


        //MeeNotesModel 是Model类

        qmlRegisterType<NoteModel>();
        MeeNotesModel model;
        model.setSource("notes/");

        //在哪查找main.qml

#ifndef MEENOTES_RESOURCE_DIR 
          const QDir dir(QApplication::applicationDirPath());
          const QUrl qmlPath(dir.absoluteFilePath("resource/default/main.qml"));
#else 
          const QDir dir(MEENOTES_RESOURCE_DIR); 
          const QUrl qmlPath(dir.absoluteFilePath("main.qml"));
#endif 
        //创建能够解释qml运行的window

        QDeclarativeWindow window(qmlPath);
         window.rootContext()->setContextProperty("meenotes", &model); 
         window.window()->show(); 
         return app.exec();
}


查看main.qml:
import Qt 4.7
import com.meego 1.0
Window {
   id: window
   Component.onCompleted: {
       window.nextPage(Qt.createComponent("NoteList.qml"))
   }
}


查看NoteList.qml:
import Qt 4.7
import com.meego 1.0
Page {
   title: "MeeNotes"
   actions: [
       Action {
           iconId: "icon-m-toolbar-add" //新建note按钮的处理
           onTriggered: {
               var note = meenotes.newNote();
               note.title = (Math.random() > 0.5) ? "Cool title!" : "";
               viewNote(note);
           }
       },
       Action {
           iconId: "icon-m-toolbar-favorite-mark" //横竖屏切换的按钮处理
           onTriggered: {
               screen.orientation = screen.orientation == Screen.Portrait ? Screen.Landscape : Screen.Portrait;
           }
       }
   ]
   Component { 
        … … …//省略

   }
   Rectangle {
       color: "white"
       anchors.fill: parent
   }
   GridView {
       id: grid
       anchors.fill: parent
       model: meenotes
       cellWidth: 250
       cellHeight: 210
       delegate: noteDelegate
   }
   function viewNote(note) {
       window.nextPage(Qt.createComponent("Note.qml"));
       window.currentPage.note = note;
   }
}

鉴于QML类似于web网页css的编写方式,效率已经很高了,但是似乎Qt Designer被我们忽视了,其实2.01版的Desinger已经可以使用meegotouch风格进行预览了,效果如下图:


目前Designer并不能直接生成QML文件,下一个版本的Desinger以及在计划之中了,可以叫他Qt Quick Designer,在Qt Roadmap中已经可以体现出来了:

QML进阶(十二)QML中几种常见应用模式 目录 左右滑动窗口(SwipeView) 堆叠窗口(StackView) 多文档窗口(DocumentWindow) 虽然QML的界面定义非常灵活,但是我们在开发应用的时候也是有固定套路的。下面介绍一下QML应用的几种固定模式,分别是:SwipeView、StackView、DocumentWindow。SwipeView窗口是一种可以通过鼠标或者手指左右滑动来实现窗口切换的视图结构,常见于移动端应用。StackView是一种堆叠层次的窗口结构,用户可以通过按键和菜单的响应操作,切换堆叠结构中的 阅读详情

相关推荐

Python与QML打造MeeGo应用开发实战

QML是一种用于描述用户界面的声明式编程语言,其基本语法结构简洁且直观,以JSON风格的文本格式编写。QML的核心概念是元素(Element),它定义了UI的基本构建块。例如,一个矩形元素可以表示为:width: 200以上代码创建了一个200x100像素的红色矩形。QML中每个元素都是一个对象,并拥有属性(properties)、信号(signals)和方法(methods)。属性定义了对象的状态,信号和方法则定义了对象的行为。QML使用简单的属性绑定和信号处理机制来实现动态交互。

weixin_42605397的博客 1341

QML 应用程序开发技术总结

QML 应用程序开发技术总结

Lion Chen i 咖啡 4279

MeeGo嵌入式操作系统的研究及应用开发

论述了在Linux平台下搭建MeeGo嵌入式操作系统应用程序开发环境的方法和步骤,给出了使用Qt Creator工具开发MeeGo应用程序的流程。通过在Atom D510嵌入式实验平台和QEMU虚拟机下安装MeeGo操作系统,设计实现了具有3D操作界面且集成办公、娱乐、微博聊天、地图查询四大模块为一体的应用程序。该应用程序具有友好的人机交互界面和良好的可移植性,体现了“一次编写,到处运行”的理念。

QML 应用程序

QML 是一种用户界面规范和编程语言。它允许开发人员和设计人员创建高性能、流畅的动画和视觉上吸引人的应用程序QML 提供了一种高度可读的、声明性的、类似 JSON 的语法,支持结合动态属性绑定的命令式 JavaScript 表达式。QML 语言和引擎基础设施由Qt QML模块提供。有关 QML 语言的详细信息,请参阅Qt QML模块文档。以下页面包含有关 QML 的更多信息:QML 的第一步- 通过这些示例开始使用 QMLQt Creator 中创建 Qt Quick 项目。

xinqingwuji的博客 1288

QT QML模块的桌面应用程序开发

QT_QML模块简介QT QML模块简介QT QML模块是QT框架的一个重要组成部分,用于构建现代化的桌面应用程序QMLQt Meta-language)是一种声明性语言,用于描述用户界面和应用程序的行为,是QT快速应用程序开发的关键。QML的基础结构QML提供了描述用户界面元素的机制,这些元素被称为组件。组件可以嵌套,也可以组合成更复杂的用户界面。QML文件通常以.qml为扩展名。在QML中,您可以定义对象,这些对象称为元素,它们具有属性和行为。

QT性能优化QT原理源码QT界面美化 4977

QML在嵌入式系统的应用

QML与嵌入式系统的关系QML与嵌入式系统的关系QML概述QMLQt Meta-Language)是一种基于JavaScript的声明性语言,用于描述用户界面和应用程序的行为。它是Qt框架的一部分,广泛应用于跨平台应用程序开发QML以简洁明了的方式,提供了可视化界面设计的能力,使得开发人员可以更加专注于业务逻辑的实现。嵌入式系统简介嵌入式系统是指那些设计用于特定任务或一组任务的计算机系统,通常具有有限的资源,如处理器速度、内存和存储空间。

QT性能优化QT原理源码QT界面美化 4169

QML语言开发MeeGo应用程序示例

简单看看MeeNotes下的实际代码 src目录下的src.pro,红色部分即是与使用libmeegotouch开发所不同之处 : TEMPLATE = app    TARGET = ../MeeNotes    LIBS += -lQtComponents      HE

Open Source Project Share的专栏 736

QML语言开发MeeGo应用程序在线开发教程 – MeeGo开发中文网

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34419326的博客 231

QML使MeeGo迅速崛起赶超Android变为可能

QML使得MeeGo迅速崛起赶超Android变为可能

Legend(谭海燕)的专栏 2839

Maemo(Meego)平台上进行Qt开发

<br /><br />在Maemo平台进行过开发的同学们都知道Maemo平台的很多API都是通过Dbus来提供的。我们通常需要通过DBus来请求一个服务。<br />那么如何通过Qt 来请求Maemo平台上提供的服务呢? 答案就是利用QtDBus<br /> <br />举个例子来说,下面的DBus请求是用来提供打电话的服务(http://wiki.maemo.org/Phone_control):<br />dbus-send --system --type=method_call --print-re

深入浅出区块链 816

电子书下载:Beginning Nokia Apps Development: Using MeeGo, Mobile QT and OpenSymbian

Book DescriptionWhile buzz often circulates around iPhone and Android, Nokia still leads the pack in terms of world market share. Symbian, for instance, remains the most widely used mobile operat...

weixin_30347009的博客 103

Qml 笔记二

meego和symbian开发中一些记录 1. 使用qml components  开发meego和 symbian 3 程序 8月10日前的QT SDK版本可以直接更新下载后无需编译就可以直接引用。  2. 使用 components 组建开发qml出现

闪饕 2261

Sailfish OS

诺基亚放弃Meego,Intel和三星整合LiMo、Meego两个操作系统为Tizen。最终负责开发Meego的前Nokia员工离开Nokia创立Jolla公司,将Meego变成了Sailfish。      Sailfish OS是一个建立在Mer Project和Qt基础上的移动操作系统,使用QMLQt Quick和标准的QtMobility API创建UI界面、应用程序。      S

liuhongwei123888的专栏 2039

怎样为MeeGo应用程序整合AppUp SDK并构建RPM包

原作者:bydmitry-rizshkov (米9网翻译,转载请注明出处) 您或许更愿意看原文。 本文将演示如何准备您的MeeGo应用程序,并通过Intel AppUp Center审核。本文项目案例来自我的另一篇文章Modern mobile applications with Qt and QML,将对代码不做任何变更。感谢Qt,使我们的Windows程序无需做任何变动,即可在meego上运行

coffeepot2003的专栏 393

MeeGo-Handset开发入门小结

关于MeeGo的版本        在MeeGo官网主要有3个:MeeGo Handset Day1 Developer PreviewMeeGo v1.0 for In-Vehicle Infotainment (IVI)MeeGo v1.0 for Netbooks (Google Chrome Browser)分别代表手机版,上网本(可能之后平板?),车载设备(GPS之类的)下载下来文件名如下meego-handset-ia32-netbook-mtf-1.0.80.12.20100723.1.img

静影沉璧 1979

MeeGo 程序开发人员乐园

最主要的人群是软件程序开发人员-特别是了解QT知识的人员,但是欢迎各类人员都欢迎参与进来. 背景: 我们拥有很多充满创意的开发人员,但是他们不知道自己的哪些技能可以帮助他们使用MeeGo开发. 我们不能因为自己的疏忽而失去他们.还有更多的开发人员对MeeGo根本不熟悉...

chuaixuanlong8504的博客 242

MeeGo 1.2版本正式发布

<br /><br />MeeGo团队宣布MeeGo 1.2版本正式发布。此版本的发布为设备供应商和开发商开始创建基于Intel Atom和ARMv7架构设备的软件打下了坚固的基石。<br /> <br />Meego1.2版本核心操作系统为移动计算技术提供了一个完整的合集。<br /> <br />MeeGo核心系统包括的几个亮点:<br />1、 MeeGo的参考核心支持多种Intel和ARMv7的平台。<br />2、QML应用框架已经拓展的qt移动性API,包括利于其他地理位置,系统,连通性,和传

MeeGo社区博客 6751
上一篇: MeeGo开发Tips(0)非Intel图形芯片使用Xephyr模拟器
下一篇: pending,resolved
xutaozero21
博客等级 码龄19年 113粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值