精华内容
下载资源
问答
  • Qml教程中文版

    2019-03-07 18:42:14
    QML全面的中文教程,对于新手值得一看。
  • QML 教程,含完整示例代码。实际和原书不匹配。书籍为英文,完整。
  • 这篇博客会介绍一下Qt中使用QML来设计GUI界面,以及QML与C++交互的方式。QML是Qt自定义的一种GUI描述文件,其文档结构有点类似NodeJS或者TypeScript,跟Android编程中的Activity的设计也很类似,在客户端GUI编程的...
  • 中文版QML教程

    2017-02-19 21:44:58
    QMLBOOK In Chinese
  • QT--QML中文教程.pdf

    2021-01-27 15:23:01
    详细的QML中文教程
  • QmlBook 学习中文Pdf版

    2018-07-03 14:16:00
    适合Qml初学者,简单入门,能快速了解Qml,方便以后的学习
  • qml中文手册pdf

    2017-12-28 23:35:17
    qml中文手册pdf,全中文,很详细。各种示例,简单易学。
  • 一.QML简介 QML(Qt Meta Language 或者 Qt Modeling Language),从Qt4.7之后,Qt引入了一种声明式脚本语言,类似解释型语言,方便使用,不在是之前C++那样的编译型语言,极大的改变了传统的Qt 使用。将所有界面...

    目录

    一.QML简介

    二.从"Hellow Word"浅谈我们第一个QML程序


    一.QML简介

    QML(Qt Meta Language 或者 Qt Modeling Language),从Qt4.7之后,Qt引入了一种声明式脚本语言,类似解释型语言,方便使用,不在是之前C++那样的编译型语言,极大的改变了传统的Qt 使用。将所有界面相关的都写入到一个qml文件中,QML 文件描述了一个对象树。其包含了构造块、图形元素(矩形、图片等)和行为(例如动画、切换等)。这些 QML 元素按照一定的嵌套关系构成复杂的组件,供用户交互,极大的方便了开发的过程,此语

    展开全文
  • 本资源是用于QML初学者进门的,里面的内容让新手更易懂。
  • 附网址:...它定义并实现了QML的语法和基础框架,并提供API使得应用程序开发者可以使用定制的类型扩展QML,或者将QML与JavaScript、C++集成起来。Qt QML模块同时提供了一个QML API和一个C++...

    附网址:http://qt-project.org/doc/qt-5/qtqml-index.html


    Qt QML

    Qt QML模块为基于QML language开发应用程序和库提供了语言和基础建设。它定义并实现了QML的语法和基础框架,并提供API使得应用程序开发者可以使用定制的类型扩展QML,或者将QML与JavaScript、C++集成起来。Qt QML模块同时提供了一个QML API和一个C++ API。

    注意到当Qt QML模块为QML应用程序提供语言和基础建设时,Qt Quick模块提供了一些可视化元素,模型—视图的支持,一个动画框架,以及其他很多用于构建用户界面的模块。

    如果你是新接触QML和Qt Quick,请查看QML Applications,它介绍了如果编写一个QML应用程序。


    Getting Started

    使用以下指令来包含模块的类:

    展开全文
  • QML入门教程

    2012-04-20 12:00:42
    Q M L入门教程
  • QML入门教程:二、QML语法

    千次阅读 2018-04-08 13:39:30
    1、QML 是一种声明语言,用于描述程序界面。 2、QML 将用户界面分解成一块块小的元素,每一元素都由很多组件构成。 3、QML 定义了用户界面元素的外观和行为;更复杂的逻辑则可以结合 JavaScript 脚本实现。这有点...

    1、QML 是一种声明语言,用于描述程序界面。
    2、QML 将用户界面分解成一块块小的元素,每一元素都由很多组件构成。
    3、QML 定义了用户界面元素的外观和行为;更复杂的逻辑则可以结合 JavaScript 脚本实现。这有点类似于
    HTML 和 JavaScript 的关系,前者用来显示界面,后者用来定义行为。
    4、QML 最简单的元素关系是层次关系。子元素处于相对于父元素的坐标系统中。也就是说,子元素的 x 和 y 的坐标值始终相对于父元素。
    下面以代码为例详细介绍:

    // rectangle.qml 
    import QtQuick 2.0 
    // 根元素:Rectangle 
    Rectangle { 
        // 命名根元素 
        id: root // 声明属性:<name>:  <value> 
        width: 120; height: 240 
        color: "#D8D8D8" // 颜色属性 
        // 声明一个嵌套元素(根元素的子元素) 
        Image { 
          id: rocket 
            x: (parent.width  - width)/2;  y: 40 // 使用 parent 引用父元素 
            source: 'assets/rocket.png' 
        } 
        // 根元素的另一个子元素 
        Text { 
            // 该元素未命名 
            y: rocket.y + rocket.height + 20 // 使用 id 引用元素 
            width: root.width // 使用 id 引用元素 
            horizontalAlignment: Text.AlignHCenter 
            text: 'Rocket' 
        } 
    } 

    5、QML 文档总要有 import 部分,用于指定该文档所需要引入的模块。通常这是一个模块名和版本号,比如这里的 QtQuick 2.0。当然,我们也可以引入自己的模块或者其他文件。
    6、QML文档的第二个部分是 QML 元素。一个 QML 文档有且只有一个根元素,类似 XML文档的规定。在我们的例子中,这个根元素就是 Rectangle 元素。QML 元素使用 {} 包围起来。{} 之中是该元素的属性;属性以键值对 name : value 的形式给出。这十分类似与 JSON 语法。QML 元素可以有一个 id 属性,作为该元素的名字。以后我们可以直接用这个名字指代该元素,相当于该元素的指针。需要注意的是,id 属性在整个 QML 文档中必须是唯一的。QML 元素允许嵌套,一个 QML 元素可以没有、可以有一个或多个子元素。子元素可以使用parent关键字访问其父元素。正如上面的例子中显示的那样,我们可以用 id,也可以用 parent 关键字访问其他元素。一个最佳实践是,将根元素的 id 命名为 root。这样我们就可以很方便地访问到根元素。

    7、QML 文档的注释使用//注释内容或者/*注释内容*/。这同 C/C++ 或者 JavaScript 是一致的。

    Text { 
        // (1) 标识符 
        id: thisLabel 
        // (2) x、y 坐标 
        x: 24; y: 16 
        // (3) 绑定 
        height: 2 * width 
        // (4) 自定义属性 
        property int times: 24 
        // (5) 属性别名 
        property alias anotherTimes: times 
        // (6) 文本和值 
        text: "Greetings " + times 
        // (7) 字体属性组 
        font.family: "Ubuntu" 
        font.pixelSize: 24 
        // (8) 附加属性 KeyNavigation 
        KeyNavigation.tab: otherLabel 
        // (9) 属性值改变的信号处理回调 
        onHeightChanged: console.log('height:', height) 
        // 接收键盘事件需要设置 focus 
        focus: true 
        // 根据 focus 值改变颜色 
        color: focus?"red":"black" 
    }

    8、标识符 id 用于在 QML 文档中引用这个元素。id 并不是一个字符串,而是一个特殊的标识符类型,这是 QML 语法的一部分。如前文所述,id 在文档中必须是唯一的,并且一旦指定,不允许重新设置为另外的元素。因此,id 很像 C++ 的指针。和指针类似,id 也不能以数字开头,具体规则同 C++ 指针的命名一致。id 看起来同其它属性没有什么区别,但是,我们不能使用 id 反查出具体的值。例如,aElement.id 是不允许的。 元素 id 应该在 QML 文档中是唯一的。实际上,QML 提供了一种动态作用域(dynamic-scoping)的机制,后加载的文档会覆盖掉前面加载的文档的相同 id。这看起来能够“更改” id 的指向,其意义是构成一个 id 的查询链。如果当前文档没有找到这个 id,那么可以在之前加载的文档中找到。这很像全局变量。不过,这种代码很难维护,因为这种机制意味着你的代码依赖于文档的加载顺序。不幸的是,我们没有办法关闭这种机制。因此,在选用 id 时,我们一定要注意唯一性这个要求,否则很有可能出现一些很难调试的问题。

    9、属性的值由其类型决定。如果一个属性没有给值,则会使用属性的默认值。我们可以通过查看文档找到属性默认值究竟是什么。 属性可以依赖于其它属性,这种行为叫作绑定。绑定类似信号槽机制。当所依赖的属性发生变化时,绑定到这个属性的属性会得到通知,并且自动更新自己的值。例如上面的 height: 2* width。height 依赖于 width属性。当 width改变时,height 会自动发生变化,将自身的值更新为 width新值的两倍。text 属性也是一个绑定的例子。注意,int 类型的属性会自动转换成字符串;并且在值变化时,绑定依然成立。 系统提供的属性肯定是不够的。所以 QML 允许我们自定义属性。我们可以使用 property关键字声明一个自定义属性,后面是属性类型和属性名,最后是属性值。声明自定义属性的
    语法是 property <type> <name> : <value>。如果没有默认值,那么将给出系统类型的默认值。
    我们也可以声明一个默认属性,例如:

    // MyLabel.qml 
    import QtQuick 2.0 
    Text { 
        default property var defaultText 
        text: "Hello, " + defaultText.text 
    } 

    在 MyLabel 中,我们声明了一个默认属性 defaultText。注意这个属性的类型是 var。这是一种通用类型,可以保存任何类型的属性值。 默认属性的含义在于,如果一个子元素在父元素中,但是没有给子元素赋值给父元素的任何属性,那么子元素属性就成为这个默认属性。利用上面的 MyLabel,我们可以有如下的代码:

    MyLabel { 
        Text { text: "world" }  
        }

    MyLabel.qml 实际可以直接引入到另外的 QML 文档,当做一个独立的元素使用。所以,我们可以把 MyLabel 作为根元素。注意 MyLabel 的子元素 Text 没有赋值给 MyLabel 的任何属性,所以,它将自动成为默认属性 defaultText 的值。因此,上面的代码其实等价于:

    MyLabel { 
        defaultText:Text  { text: "world" } 
    } 

    这种默认属性的写法很像嵌套元素。其实嵌套元素正是利用这种默认属性实现的。所有可以嵌套元素的元素都有一个名为 data 的默认属性。所以这些嵌套的子元素都是添加到了 data 属性中。
    属性也可以有别名。我们使用 alias 关键字声明属性的别名:property alias <name> : <reference>。别名和引用类似,只是给一个属性另外一个名字。C++ 教程里面经常说,“引用即别名”,这里就是“别名即引用”。这种技术对于导出属性非常有用。例如,我们希望让一个子元素的属性外部可用,那么就可以给这个属性一个别名,让外部文档通过这个别名访问这个属性。别名不需要特别声明属性类型,它使用被引用属性的类型或者 id。需要注意的是,属性别名在组件完全初始化之后才可用。因此,下面的代码是非法的:

    property alias myLabel: label 
    myLabel.text:  "error" // 错误!此时组件还没有初始化 
    property  alias myLabelText:  myLabel.text  // 错误!不能为属性别名的属性创建别名 

    属性也可以分组。分组可以让属性更具结构化。上面示例中的 font 属性另外一种写法是:
    font { family: "Ubuntu"; pixelSize: 24 }
    原写法为:

        font.family: "Ubuntu" 
        font.pixelSize: 24 

    有些属性可以附加到元素本身,其语法是<Element>.<property>: <value>。 每一个属性都可以发出信号,因而都可以关联信号处理函数。这个处理函数将在属性值变化时调用。这种值变化的信号槽命名为 on + 属性名 + Changed,其中属性名要首字母大写。例如上面的例子中,height 属性变化时对应的槽函数名字就是 onHeightChanged。

    10、QML 和 JavaScript 关系密切,下面是简单示例:

    Text { 
        id: label 
        x: 24; y: 24 
        // 自定义属性,表示空格按下的次数  
          property int spacePresses: 0 
        text: "Space pressed: " + spacePresses + " times" 
        // (1) 文本变化的响应函数,使用控制台输出信息 
        onTextChanged: console.log("text changed to:", text) 
        // 接收键盘事件,需要设置 focus 属性 
        focus: true 
        // (2) 调用 JavaScript 函数 
        Keys.onSpacePressed: { 
            increment() 
        } 
        // 按下 Esc 键清空文本 
        Keys.onEscapePressed: { 
            label.text = '' 
        } 
        // (3) 一个 JavaScript 函数 
        function increment() { 
            spacePresses = spacePresses + 1 
        } 
    }

    Text 元素会发出 textChanged 信号。我们使用 on + 信号名,信号名首字母大写的属性表示一个槽函数。也就是说,当 Text 元素发出 textChanged 信号时,onTextChanged 就会被调用。类似的,onSpacePressed 属性会在空格键按下时被调用。此时,我们调用了一个 JavaScript 函数。另外,当height(高度) 改变时会使用控制台输出一个信息
    QML 文档中可以定义 JavaScript 函数,语法同普通 JavaScript 函数一样。
    QML 的绑定机制同 JavaScript 的赋值运算符有一定类似。它们都可以将右面的值赋值给前面。不同之处在于,绑定会在后面的值发生改变时,重新计算前面的值;但是赋值只是一次性的。绑定是一个协议,并且存在于整个生命周期。当一个新的绑定生效或者使用JavaScript赋值给属性时,绑定的生命周期就会结束。

    展开全文
  • QML教程-属性绑定与非绑定

    千次阅读 2019-06-14 09:41:03
    QML界面会使用到很多的属性,其中属性的绑定与解绑尤其重要,决定着该界面属性是否能动态更新的功能。本文介绍属性的绑定与非绑定特性。

    写QML界面会经常使用到很多的属性,其中属性的绑定与解绑尤其重要,决定着该界面属性是否能动态更新的功能。本文介绍属性的绑定与非绑定特性。

    1.属性绑定

    • 使用:操作符,作用是左值绑定右值。
    • 例:
    Item {
        property color myColor: "white"
        ...
        Rectangle {
            color: myColor
            ...
        }
    }
    
    • color绑定父控件myColor属性。

    2.属性非绑定(解除绑定)

    • 使用=操作符,作用是左值解除右值绑定
    • 例:
    Item {
        property color myColor: "white"
        ...
        Rectangle {
            color: myColor
            ...
            Component.onCompleted: color = "blue"
        }
    }
    
    • color = "blue"被执行时会解除color: myColor的绑定

    3.属性重新绑定

    • 使用Binding控件对已经解除绑定的属性重新绑定。
    • 例:
    Item {
        property color myColor: "white"
        ...
        Rectangle {
            color: myColor
            ...
            Component.onCompleted: color = "blue"
        }
        
        Binding {
            target: rect
            property: "color"
            value: root.myColor
        }
    }
    
    • target为被绑定(左值)的id;
    • property为被绑定(左值)的属性,注意类型为字符串;
    • value为绑定(右值)的属性。

    4.类比原理

    • 绑定原理相当于C++的引用或指针。
    • 非绑定原来相当于C++的赋值,将值复制一份。

    5.什么情况下使用绑定与非绑定?

    • 使用绑定特性会导致不同对象的属性之间存在依赖关系,对界面动态刷新会有影响。
    • 比如:翻译刷新问题。 如果翻译字段被绑定了,那么翻译字段刷新将会更新所有的文字,这样会导致界面的突然卡顿(如果翻译字段过多)。这时候建议是解除绑定可以降低界面的突然卡顿。
    • 绑定容易影响性能,但刷新界面方便
    • 非绑定虽然要做些额外的工作(赋值)但可以降低对界面的刷新,特别是图表类。
    展开全文
  • pyside官方教程2 QML简单教程

    千次阅读 2019-03-02 15:55:07
    Your First Application Using PySide2 and QtQuick/QML QML is a declarative language that lets you develop applications faster than with traditional languages. It is ideal for designing the UI of your a...
  • QML入门教程:一、QML和QtQuick简介以及QML实例

    万次阅读 多人点赞 2018-04-08 11:44:09
    从 Qt 4.7 开始,Qt 引入了一种声明式脚本语言,称为 QML(Qt Meta Language 或者 Qt Modeling Language),作为 C++ 语言的一种替代。而 Qt Quick 就是使用 QML 构建的一套类库。 QML 是一种基于 JavaScript 的声明...
  • 1 什么是QML 通俗的讲,QML是一种编程语言,用来开发界面用的. QML书写格式类似于JSON的语法,并支持将命令性JavaScript表达式与动态属性绑定结合在一起 2 学习QML的第一步-通过一个示例来开始学习QML ...
  • QML官方系列教程——QML Applications

    万次阅读 多人点赞 2014-06-04 15:46:55
    QML Applications QML是一种声明式语言,它提供了一组接口用来描述视觉组件以及他们的互动和相关性。它是一个高度可读的语言,并且被设计成使组件以一个动态的方式相互连接。同时它使组件很容易被复用以及创建定制的...
  • PySide2学习总结(七)Qml教程

    千次阅读 2019-01-25 21:48:22
    首先由一个简单的示例来进行QML的基础介绍。 在view.qml编辑代码如下: // 导入Qt附带的内置QML类型(如Rectangle,Image,...) import QtQuick 2.0 // 使用Rectangle类型声明根元素,Rectangle类型是在QML中创建...
  • 1 创建项目 方法1(文件-&gt;新建文件或项目) 方法2(点击'New Project')   2 选项参数选择 选择 QtQuickApplication选项,再点击 Choose按钮进入下一步;... 选择Qt版本和默认的qml文...
  • QML入门教程:三、QML基本元素

    千次阅读 多人点赞 2018-04-08 14:37:42
    QML 基本元素可以分为可视元素和不可视元素两类。可视元素(例如前面提到过的Rectangle)具有几何坐标,会在屏幕上占据一块显示区域。不可视元素(例如 Timer)通常提供一种功能,这些功能可以作用于可视元素。 ...
  • //点一次按钮,角度+30 } } } 写在最后,上面的例子中,我们使用了 NumberAnimation 来实现一个图片的旋转动画, 有朋友会注意到,QML其实提供了专用的旋转动画类:RotationAnimation。其实这两个类都继承自...
  • 效果图: 首先创建一个QWidget工程,并添加以下C++代码,该代码创建并显示了一个QQuickWidget窗口,这个窗口中的内容是一个QML文件:clock.qml。注:我已经把这个文件添加到了资源文件中。 QQuickWidget *view = new...
  • learnqml ... 第一章:基础介绍 什么是Qt(免费) 下载Qt(免费) ...QML程序效果展示(免费) 第二章:入门 Qt Creator 入门(免费) Qt Creator Sessions CMake环境配置(免费) 新建项目(免费) 项目...
  • Qt Quick入门教程(1): Qt Quick与QML介绍

    千次阅读 2020-04-27 14:05:57
    1 什么是Qt Qucik? Qt Quick是QtSDK4.7中引入的一种新的界面开发框架,使用QtQuick,你可以快速、 轻松地创建供... Qt Quick包括描述性语言QML、语言运行时、 大量的用户界面元素、Qt Creator对QML的完美支持、Qt ...
  • 发现了一个很好的中文翻译的入门手册。上链接 QML中文文档

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,200
精华内容 880
关键字:

qml教程