zoukankan      html  css  js  c++  java
  • QML学习(一)——<简要概念知识点>

    转载:https://www.cnblogs.com/dengyg0710/p/10644936.html

    • 1.一个 QML 文档有且只有一个根元素。
    • 2.QML 元素名后所有内容使用 {} 包围起来。{} 之中是该元素的属性;属性以键值对 name : value 的形式给出。
    • 3.QML 元素可以有一个 id 属性,作为该元素的名字。以后我们可以直接用这个名字指代该元素,相当于该元素的指针。需要注意的是,id 属性在整个 QML 文档中必须是唯一的。
    • 4.QML 元素允许嵌套,一个 QML 元素可以没有、可以有一个或多个子元素。子元素可以使用parent关键字访问其父元素。正如上面的例子中显示的那样,我们可以用 id,也可以用 parent 关键字访问其他元素。
    • 5.通常将根元素的 id 命名为 root。这样我们就可以很方便地访问到根元素。
    • 6.QML 文档的注释使用//注释内容或者/*注释内容*/。这同 C/C++ 或者 JavaScript 是一致的。
    • 7.QML 允许我们自定义属性。我们可以使用 property关键字声明一个自定义属性,后面是属性类型和属性名,最后是属性值。声明自定义属性的语法是 property <type> <name> : <value>。如果没有默认值,那么将给出系统类型的默认值。
    • 8.我们使用 on + 信号名,信号名首字母大写的属性表示一个槽函数。也就是说,当 Text 元素发出 textChanged 信号时,onTextChanged 就会被调用。类似的,onSpacePressed 属性会在空格键按下时被调用。
    • 9.每一个.qml即定义一个元素,如player.qml,那么就player元素可以供其他调用使用,成为一个QML元素。即 player {…}
    • 10.所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。

      信号和槽是Qt特有的信息传输机制,是Qt设计程序的重要基础,它可以让互不干扰的对象建立一种联系。

           槽的本质是类的成员函数,其参数可以是任意类型的。和普通C++成员函数几乎没有区别,它可以是虚函数;也可以被重载;可以是公有的、保护的、私有的、也可以被其他C++成员函数调用。唯一区别的是:槽可以与信号连接在一起,每当和槽连接的信号被发射的时候,就会调用这个槽。

    • 11.QMetaObject::activate用于响应槽函数,即在emit发射后,该函数激活对应的槽函数。【由moc自动生成】

    moc 全称是 Meta-Object Compiler,也就是“元对象编译器”。Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件一起参与编译。另外,我们还可以看出一点,moc 的执行是在预处理器之前。因为预处理器执行之后,Q_OBJECT 宏就不存在了。

    • 12.QML与C++交互方式:

    context->setContextProperty("_login", m_loginManager);//用于将loginManager对象注册到qml里,在qml里的名字为_login,可通过该名字调用类的功能【loginManager是一个对象(类的实例),而不是类的名称】

    • 13.Q_PROPERTY宏:

      在外界看来,property跟类中数据成员没有什么区别,但是还是有几点不一样,参考qt文档,主要有以下几点:

      1.必须有一个read函数。它用来读取属性值。因此用Const限定。它的返回值类型必须为属性类型或者属性类型的引用或者指针。不能是其他类型例如:QWidget::hasFocus(). 

      2.有一个可选的write函数。它用来设置属性值,它的返回值必须为void型,而起必须要含有一个参数。例如:QWidget::setEnabled()

      3.一个reset函数能够把property设置成其默认状态,它也是可选的。复位功能必须返回void,并且不带参数,

      4.一个NOTIFY信号是可选的 。如果定义,它提供了一个信号这个信号在值发生改变时会自动被触发。

    • 14.QML里连接信号与槽的方式:
    复制代码
     1 Connections{
     2 
     3         target: nummake;
     4 
     5         onNumchanged:{
     6 
     7             num_show.text = nummake.num;
     8 
     9         }
    10 
    11     }
    复制代码

    当nummake元素里的onNumchanged信号函数发生(numchanged)时,后面的函数运行(num_show.text = nummake.num;)

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
  • 原文地址:https://www.cnblogs.com/laiyingpeng/p/11857376.html
Copyright © 2011-2022 走看看