qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

原博主博客地址:http://blog.csdn.net/qq21497936
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516201

qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

本学章节笔记主要详解Item元素(上半场主要涉及anchors锚),因为所有可视化的界面元素都继承于Item,熟悉Item后,不同的继承子类,有其定制的属性(从几个到几十个不等)。

《Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)》:
http://blog.csdn.net/qq21497936/article/details/78486552
    《qml学习笔记(一):界面元素初探》:
http://blog.csdn.net/qq21497936/article/details/78498575

《qml学习笔记(三):可视化元素基类Item详解(下半场)》
http://blog.csdn.net/qq21497936/article/details/78522816

基类Item介绍

基类Item是所有可视化子类的父类,它不是可见的,但是它定义了所有通用元素通用的属性,比如x、y、width、height、anchoring和handingsuppourt。

几个Item的使用示例

Image示例

[css] view plain copy

  1. Item{
  2. Rectangle{
  3. width:1000;
  4. height:1000;
  5. color:"black";
  6. Image { // Image默认的背景是透明
  7. source:"1.png"// 相对于.qml的路径
  8. }
  9. Image{
  10. x:80
  11. y:200
  12. width:100
  13. height:100
  14. source:"1.png"
  15. }
  16. Image{
  17. x:190
  18. y:400
  19. width:100
  20. height:100
  21. fillMode:Image.Tile
  22. source:"1.png"
  23. }
  24. }
  25. }

效果如下图:

捕捉键盘

[css] view plain copy

  1. Item{
  2. focus:true
  3. Keys.onPressed:{
  4. if(event.key==Qt.Key_Left){
  5. console.log("moveleft");
  6. event.accepted=true;
  7. }
  8. }
  9. Keys.onReturnPressed:
  10. console.log("Pressedreturn");
  11. }

输入处理

[css] view plain copy

  1. Rectangle{
  2. width:100;
  3. height:100
  4. FocusScope{
  5. id:focusScope
  6. focus:true
  7. TextInput{
  8. id:input
  9. focus:true
  10. }
  11. }
  12. }

效果如图

属性详解

activeFocus : bool [可读写][指示焦点:窗口是否获取焦点]

此属性指示元素是否具有活动焦点。如果指示是真的,这个对象是目前接收键盘输入,或是一个FocusScope为父对象的对象,目前接收键盘输入。

通常,此属性是通过设置焦点在其子元素(继承于Item)和其外围FocusScope对象获得。在下面的例子中,TextInput和FocusScope对象会有活跃的热点,而根矩形对象将不会。

activeFocusOnTab : bool [可读写][设置item是否可被tab选中,默认为false]

anchors:一组属性,提供了以元素相互关系为基准的定位方式,主要包括以下的:

anchors.top : AnchorLine [可读写][顶部边界]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. x:100;
  5. y:200;
  6. source: "./1.png";
  7. }
  8. Text {
  9. id: label;
  10. anchors.top: pic.bottom; // 对象的顶部是与pic的底部高度相同
  11. text: "hello world";
  12. color: "black";
  13. font.pointSize: 14; // 大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
  14. }
  15. }

anchors.bottom : AnchorLine [可读写][底部边界]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. x:100;
  5. y:200;
  6. source: "./1.png";
  7. }
  8. Text {
  9. id: label;
  10. anchors.bottom: pic.bottom; // 对象的顶部是与pic的底部高度相同
  11. text: "hello world";
  12. color: "black";
  13. font.pointSize: 14; // 大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
  14. }
  15. }

anchors.left : AnchorLine [可读写][左边界]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. x:100;
  5. y:10;
  6. source: "./1.png";
  7. }
  8. Text {
  9. id: label;
  10. anchors.left: pic.right; // 对象的顶部是与pic的底部高度相同
  11. text: "hello world";
  12. color: "black";
  13. font.pointSize: 14; // 大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
  14. }
  15. }

anchors.right : AnchorLine [可读写][右边界]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. x:100;
  5. y:10;
  6. source: "./1.png";
  7. }
  8. Text {
  9. id: label;
  10. anchors.right: pic.right; // 对象的顶部是与pic的底部高度相同
  11. text: "hello world";
  12. color: "black";
  13. font.pointSize: 14; //大于0的值,与设备无关font.pixelSize:单位为像素,依赖于设备
  14. }
  15. }

anchors.horizontalCenter : AnchorLine [可读写][水平中心]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. source: "./1.png";
  5. }
  6. Text {
  7. id: label
  8. // 对象的水平中心 以 pic的水平中心 为中心
  9. anchors.horizontalCenter: pic.horizontalCenter;
  10. text: "hello world";
  11. color: "white";
  12. font.pointSize: 14; // 大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
  13. }
  14. }

anchors.verticalCenter : AnchorLine [可读写][垂直中心]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. x:100;
  5. y:10;
  6. source: "./1.png";
  7. }
  8. Text {
  9. id: label;
  10. anchors.verticalCenter: pic.bottom; // 对象的顶部是与pic的底部高度相同
  11. text: "hello world";
  12. color: "black";
  13. font.pointSize: 14; //大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
  14. }
  15. }

anchors.baseline : AnchorLine AnchorLine [可读写][baseline是指的文本所在的线,如果item没有文字的话baseline就和top的位置是相同的]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. x:40;
  5. y:40;
  6. source: "./1.png";
  7. }
  8. Text {
  9. id: label;
  10. anchors.baseline: pic.top;
  11. text: "hello world";
  12. color: "black";
  13. font.pointSize: 14; //大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
  14. }
  15. }

anchors.fill : Item [可读写][用本对象填充指向的对象元素]

[css] view plain copy

  1. Item{
  2. Image{
  3. id:pic;
  4. x:40;
  5. y:40;
  6. source:"./1.png";
  7. }
  8. Rectangle{
  9. id:label;
  10. anchors.fill:pic; // 此时设置width和height,测试无效,直接填满pic
  11. color:"black";
  12. }
  13. }

anchors.centerIn : Item [可读写][用本对象的中心对准指向对象的中心,开始辐射出去,区域可大于设置指向的对象]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. x:40;
  5. y:40;
  6. source: "./1.png";
  7. }
  8. Rectangle {
  9. id: label;
  10. width: 60;
  11. height: 60;
  12. anchors.centerIn: pic; // 以pic的中心为该对象中心进行辐射(区域可大于pic)
  13. color: "black";
  14. }
  15. }

anchors.margins : real [可读写][设置所有(top,bottom,left,right)边框的宽度]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. x:40;
  5. y:40;
  6. source: "./1.png";
  7. }
  8. Rectangle {
  9. id: label;
  10. width: 60;
  11. height: 60;
  12. color: "black";
  13. anchors.margins: 10;
  14. anchors.left: pic.right;
  15. }
  16. Rectangle {
  17. id: label2;
  18. width: 60;
  19. height: 60;
  20. color: "black";
  21. anchors.margins: 10;
  22. anchors.top: pic.bottom;
  23. }
  24. }

[css] view plain copy

  1. Item {
  2. Rectangle {
  3. id: label;
  4. width: 60;
  5. height: 60;
  6. color: "red";
  7. anchors.margins: 50;
  8. }
  9. Rectangle {
  10. id: label2;
  11. width: 60;
  12. height: 60;
  13. color: "black";
  14. anchors.margins: 50; // 只对本对象设置anchors边框有效
  15. anchors.top: label.bottom;
  16. }
  17. Rectangle {
  18. id: labe3;
  19. width: 60;
  20. height: 60;
  21. color: "red";
  22. anchors.margins: 50; // 只对本对象设置anchors边框有效
  23. anchors.top: labe2.bottom;
  24. }
  25. }

anchors.topMargin : real [可读写][设置top边框的宽度,参照margins]

anchors.bottomMargin : real [可读写][设置bottom边框的宽度,参照margins]

anchors.leftMargin : real [可读写][设置left边框的宽度,参照margins]

anchors.rightMargin : real [可读写][设置right边框的宽度,参照margins]

anchors.horizontalCenterOffset : real [可读写][设置水平中心偏移量]

[css] view plain copy

  1. Item {
  2. Image {
  3. id: pic;
  4. source: "./1.png";
  5. }
  6. Rectangle {
  7. width: 30;
  8. height: 30;
  9. id: rect;
  10. color: "black";
  11. // 对象的水平中心 以 pic的水平中心 为中心
  12. anchors.horizontalCenter: pic.horizontalCenter;
  13. // 注意:horizomtalCenterOffset针对于horizontalCenter
  14. anchors.horizontalCenterOffset: 50;
  15. }
  16. }

anchors.verticalCenterOffset : real [可读写][参照设horizontalCenter,与其类似]

anchors.baselineOffset : real[可读写][参照设horizontalCenter,与其类似]

anchors.alignWhenCentered : bool [可读写][指定不使用半个像素绘制图形,当需要居中一个elements,宽度或者高度是基数,不使用半个像素绘制,对此处理解有疑问]

下章节

《qml学习笔记(三):可视化元素基类Item详解(下半场)》:http://blog.csdn.net/qq21497936/article/details/78522816

原博主博客地址:http://blog.csdn.net/qq21497936
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516201

时间: 2024-10-13 10:42:22

qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)的相关文章

Java记录 -22- Java的基类Object详解

Java的基类Object详解 Java的JDK文档要经常查阅使用,最好查看英文的文档. java.lang.Object 类,java.lang包在使用的时候无需显示导入,编译时由编译器自动帮助我们导入. API(Application Programinga Interface),应用编程接口. Object obj = new Object(); System.out.println(obj); System.out.println(obj.toString()); 上面打印的两个内容一样

Ext.Net学习笔记22:Ext.Net Tree 用法详解

Ext.Net学习笔记22:Ext.Net Tree 用法详解 上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat="server"> <Root> <ext:Node Text="根节点" Expanded="true"> <Children> <ext:Node Text="节点1" Expand

Ext.Net学习笔记07:Ext.Net DirectMethods用法详解

前面两篇内容中,我们看到了DirectEvents方便调用服务器端方法.DirectEvents调用WebService方法的使用方法,今天我们来看看DirectMethods,这家伙可比DirectEvents更加灵活了,它可以像调用JS方法一样来异步调用服务器端的方法. 使用DirectMethods在JS中调用C#方法 我承认,这个标题有点噱头,其实应该是通过DirectMethods,在JS中通过异步调用的方式执行服务器端的方法. 来看一个例子吧: [DirectMethod] publ

《Hibernate学习笔记十》:多对多关联关系详解

<Hibernate学习笔记十>:多对多关联关系 前面介绍了一对一.多对一和一对多的关联关系在Hibernate应如何实现,这篇博文就来介绍下最后一种关联关系:多对多.多对多关联关系在我们现实生活中的例子实在是太多太多,最典型的就是老师和学生的例子:一个老师可以教多个学生,而一个学生又可以被多个老师来教. 了解一点数据库的我们都知道,在数据库中表示多对多的关联关系,是借助于中间表来解决的. 如下: 还是和以往的思路一样,每一种关联关系都分为单向关联和双向关联,我们每种都会进行介绍,对于单向和双

枚举基类Enum详解

本文主要是对枚举类型的基类Enum类做一个介绍: 首先,Enum类位于java.lang包下,根据类的介绍可以发现,Enum类是Java中所有枚举类的父类,将枚举作为一个set或者Map的keys来使用具有很高的效率. Enum类是一个抽象类,实现了Comparable和Serializable接口,在类中只有两个成员变量name和ordinal,分别表示枚举的名字和序号均为private,但是提供了两个方法来返回这两个字段分别是name()和ordinal(); Enum类提供一个为一个构造方

Struts2学习笔记(九):Strut2通用标签详解

本节主要介绍Strus2中的通用标签,主要有<s:url>, <s:set>, <s:push>, <s:if>, <s:elseif>, <s:else>, <s:iterator>, <s:sort>, <s:date>, <s:a>等几个标签的具体用法,仍然采用代码加注释的形式进行说明,希望能对大家有帮助. 刚入门的朋友阅读本文前,请阅读: Struts2学习笔记(六):值栈(va

学习笔记-《Linux基础知识之挂载详解(mount,umount及开机自动挂载)》

<Linux基础知识之挂载详解(mount,umount及开机自动挂载)>来源:Linux社区  作者:chawan 原文链接 http://www.linuxidc.com/Linux/2016-08/134666.htm 以下是学习作者这篇文章做的一些摘要及学习体会. 重要概念(经典原文引述) 挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点

PHP学习笔记二十五【类的继承】

<?php //定义父类 class Stu{ public $name; protected $age; protected $grade; private $address;//私有变量不会被继承 //当一个子类的方法和父类的方法完全一样,称为方法的重写 public function __construct(){ echo "Stu 构造函数"; } public function showInfo() { echo $this->name."||"

PHP学习笔记二十六【类的重载】

<?php //重载: //函数名一样,通过函数的参数个数或者是参数类型不同,达到调用同一个函数名 Class A{ // public function test1(){ // echo "test1()"; // } // public function test1($name) // { // echo "hello world"; // } //PHP不支持以上的重载方式 public function test1(){ echo "调用te