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示例
- Item{
- Rectangle{
- width:1000;
- height:1000;
- color:"black";
- Image { // Image默认的背景是透明
- source:"1.png"// 相对于.qml的路径
- }
- Image{
- x:80
- y:200
- width:100
- height:100
- source:"1.png"
- }
- Image{
- x:190
- y:400
- width:100
- height:100
- fillMode:Image.Tile
- source:"1.png"
- }
- }
- }
效果如下图:
捕捉键盘
- Item{
- focus:true
- Keys.onPressed:{
- if(event.key==Qt.Key_Left){
- console.log("moveleft");
- event.accepted=true;
- }
- }
- Keys.onReturnPressed:
- console.log("Pressedreturn");
- }
输入处理
- Rectangle{
- width:100;
- height:100
- FocusScope{
- id:focusScope
- focus:true
- TextInput{
- id:input
- focus:true
- }
- }
- }
效果如图
属性详解
activeFocus : bool [可读写][指示焦点:窗口是否获取焦点]
此属性指示元素是否具有活动焦点。如果指示是真的,这个对象是目前接收键盘输入,或是一个FocusScope为父对象的对象,目前接收键盘输入。
通常,此属性是通过设置焦点在其子元素(继承于Item)和其外围FocusScope对象获得。在下面的例子中,TextInput和FocusScope对象会有活跃的热点,而根矩形对象将不会。
activeFocusOnTab : bool [可读写][设置item是否可被tab选中,默认为false]
anchors:一组属性,提供了以元素相互关系为基准的定位方式,主要包括以下的:
anchors.top : AnchorLine [可读写][顶部边界]
- Item {
- Image {
- id: pic;
- x:100;
- y:200;
- source: "./1.png";
- }
- Text {
- id: label;
- anchors.top: pic.bottom; // 对象的顶部是与pic的底部高度相同
- text: "hello world";
- color: "black";
- font.pointSize: 14; // 大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
- }
- }
anchors.bottom : AnchorLine [可读写][底部边界]
- Item {
- Image {
- id: pic;
- x:100;
- y:200;
- source: "./1.png";
- }
- Text {
- id: label;
- anchors.bottom: pic.bottom; // 对象的顶部是与pic的底部高度相同
- text: "hello world";
- color: "black";
- font.pointSize: 14; // 大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
- }
- }
anchors.left : AnchorLine [可读写][左边界]
- Item {
- Image {
- id: pic;
- x:100;
- y:10;
- source: "./1.png";
- }
- Text {
- id: label;
- anchors.left: pic.right; // 对象的顶部是与pic的底部高度相同
- text: "hello world";
- color: "black";
- font.pointSize: 14; // 大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
- }
- }
anchors.right : AnchorLine [可读写][右边界]
- Item {
- Image {
- id: pic;
- x:100;
- y:10;
- source: "./1.png";
- }
- Text {
- id: label;
- anchors.right: pic.right; // 对象的顶部是与pic的底部高度相同
- text: "hello world";
- color: "black";
- font.pointSize: 14; //大于0的值,与设备无关font.pixelSize:单位为像素,依赖于设备
- }
- }
anchors.horizontalCenter : AnchorLine [可读写][水平中心]
- Item {
- Image {
- id: pic;
- source: "./1.png";
- }
- Text {
- id: label
- // 对象的水平中心 以 pic的水平中心 为中心
- anchors.horizontalCenter: pic.horizontalCenter;
- text: "hello world";
- color: "white";
- font.pointSize: 14; // 大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
- }
- }
anchors.verticalCenter : AnchorLine [可读写][垂直中心]
- Item {
- Image {
- id: pic;
- x:100;
- y:10;
- source: "./1.png";
- }
- Text {
- id: label;
- anchors.verticalCenter: pic.bottom; // 对象的顶部是与pic的底部高度相同
- text: "hello world";
- color: "black";
- font.pointSize: 14; //大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
- }
- }
anchors.baseline : AnchorLine AnchorLine [可读写][baseline是指的文本所在的线,如果item没有文字的话baseline就和top的位置是相同的]
- Item {
- Image {
- id: pic;
- x:40;
- y:40;
- source: "./1.png";
- }
- Text {
- id: label;
- anchors.baseline: pic.top;
- text: "hello world";
- color: "black";
- font.pointSize: 14; //大于0的值,与设备无关font.pixelSize:单位像素,依赖于设备
- }
- }
anchors.fill : Item [可读写][用本对象填充指向的对象元素]
- Item{
- Image{
- id:pic;
- x:40;
- y:40;
- source:"./1.png";
- }
- Rectangle{
- id:label;
- anchors.fill:pic; // 此时设置width和height,测试无效,直接填满pic
- color:"black";
- }
- }
anchors.centerIn : Item [可读写][用本对象的中心对准指向对象的中心,开始辐射出去,区域可大于设置指向的对象]
- Item {
- Image {
- id: pic;
- x:40;
- y:40;
- source: "./1.png";
- }
- Rectangle {
- id: label;
- width: 60;
- height: 60;
- anchors.centerIn: pic; // 以pic的中心为该对象中心进行辐射(区域可大于pic)
- color: "black";
- }
- }
anchors.margins : real [可读写][设置所有(top,bottom,left,right)边框的宽度]
- Item {
- Image {
- id: pic;
- x:40;
- y:40;
- source: "./1.png";
- }
- Rectangle {
- id: label;
- width: 60;
- height: 60;
- color: "black";
- anchors.margins: 10;
- anchors.left: pic.right;
- }
- Rectangle {
- id: label2;
- width: 60;
- height: 60;
- color: "black";
- anchors.margins: 10;
- anchors.top: pic.bottom;
- }
- }
- Item {
- Rectangle {
- id: label;
- width: 60;
- height: 60;
- color: "red";
- anchors.margins: 50;
- }
- Rectangle {
- id: label2;
- width: 60;
- height: 60;
- color: "black";
- anchors.margins: 50; // 只对本对象设置anchors边框有效
- anchors.top: label.bottom;
- }
- Rectangle {
- id: labe3;
- width: 60;
- height: 60;
- color: "red";
- anchors.margins: 50; // 只对本对象设置anchors边框有效
- anchors.top: labe2.bottom;
- }
- }
anchors.topMargin : real [可读写][设置top边框的宽度,参照margins]
anchors.bottomMargin : real [可读写][设置bottom边框的宽度,参照margins]
anchors.leftMargin : real [可读写][设置left边框的宽度,参照margins]
anchors.rightMargin : real [可读写][设置right边框的宽度,参照margins]
anchors.horizontalCenterOffset : real [可读写][设置水平中心偏移量]
- Item {
- Image {
- id: pic;
- source: "./1.png";
- }
- Rectangle {
- width: 30;
- height: 30;
- id: rect;
- color: "black";
- // 对象的水平中心 以 pic的水平中心 为中心
- anchors.horizontalCenter: pic.horizontalCenter;
- // 注意:horizomtalCenterOffset针对于horizontalCenter
- anchors.horizontalCenterOffset: 50;
- }
- }
anchors.verticalCenterOffset : real [可读写][参照设horizontalCenter,与其类似]
anchors.baselineOffset : real[可读写][参照设horizontalCenter,与其类似]
anchors.alignWhenCentered : bool [可读写][指定不使用半个像素绘制图形,当需要居中一个elements,宽度或者高度是基数,不使用半个像素绘制,对此处理解有疑问]
下章节
原博主博客地址:http://blog.csdn.net/qq21497936
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516201
qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)的更多相关文章
- linux初级学习笔记四:Linux文件管理类命令详解!(视频序号:03_1)
本节学习的命令:cat(tac),more,less,head,tail,cut,sort,uniq,wc,tr 本节学习的技能:目录管理 文件管理 日期时间 查看文本 分屏显示 文本处理 文件管理命 ...
- moviepy音视频剪辑:视频剪辑基类VideoClip详解
☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...
- Ext.Net学习笔记22:Ext.Net Tree 用法详解
Ext.Net学习笔记22:Ext.Net Tree 用法详解 上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat=&q ...
- Ext.Net学习笔记23:Ext.Net TabPanel用法详解
Ext.Net学习笔记23:Ext.Net TabPanel用法详解 上面的图片中给出了TabPanel的一个效果图,我们来看一下代码: <ext:TabPanel runat="se ...
- web前端学习(三)css学习笔记部分(4)-- CSS选择器详解
4. 元素选择器详解 4.1 元素选择器 4.2 选择器分组 用英文逗号","相连,使用相同的样式表 使用通配符对所有元素进行通用设定. 4.3 类选择器详解 4.3.1. ...
- moviepy音视频剪辑:moviepy中的剪辑基类Clip详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...
- 枚举基类Enum详解
本文主要是对枚举类型的基类Enum类做一个介绍: 首先,Enum类位于java.lang包下,根据类的介绍可以发现,Enum类是Java中所有枚举类的父类,将枚举作为一个set或者Map的keys来使 ...
- linux初级学习笔记六:linux用户及权限详解!(视频序号:03_4)
本节学习的命令:/etc/passwd,/etc/shadow,/etc/group文件详解 本节学习的技能: 安全上下文 文件与目录的权限管理 影子命令 用户,用户组类别详解 /etc/passwd ...
- [ kvm ] 学习笔记 6:virsh 命令及功能详解
1. 虚拟机管理操作 attach-device 从XML文件附加设备 attach-disk 附加磁盘设备 attach-interface 连接网络接口 autostart 自动启动一个域 blk ...
随机推荐
- 安装配置博客WordPress
1.下载并解压WordPress cd /usr/local/src wget https://cn.wordpress.org/wordpress-4.4.2-zh_CN.tar.gztar zcv ...
- Linux命令之乐--grep
正则表达式基本组成部分 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* St ...
- Android的读写文件及权限设置
drwx read write excute openFileOutput(name,drwx); 用系统api读取文件 设置文件生成的权限: public static boolean sav ...
- Hadoop学习之路
Hadoop是谷歌的集群系统的开源实现: -google集群系统:GFS.MapReduce.BigTable -Hadoop主要由HDFS(hadoop distrubuted file syste ...
- C、C++编程入口,常见的编程题
1.设计一个从5个数中取最小数和最大数的程序. 2.#include<stdio.h> 3.int min(int a[],int i); 4.int max(int a[],int i) ...
- Ubuntu14.04下安装DevStack
虚拟机中的网络配置 NET8 为nat net2 为host-only 虚拟机网络配置 # The primary network interface vmnet nat type auto eth0 ...
- 破谣言——iPhone砍价
微信朋友圈和QQ空间很多朋友在传一个iPhone砍价免费送的活动.好吧,砍页面下面的那邪恶广告,第一感觉就是假的.但我要给出证明,所以就有了下面的代码.[只需把UID换成自己的就行],当你砍到5分钱的 ...
- Xcode里修改工程名、类名、批量修改变量名
转:http://blog.csdn.net/yuedong56/article/details/13767001 一.修改工程名: 1.点击工程,右键,选择如图选项. 2.右侧如图位置,修改工程名. ...
- Nexus介绍
转自:https://www.cnblogs.com/wincai/p/5599282.html 开始在使用Maven时,总是会听到nexus这个词,一会儿maven,一会儿nexus,当时很是困惑, ...
- Visual Studio 2015 Enterprise - 企业版 - 简体中文
文件名称 文件大小 百度网盘下载 微软官方下载 Visual Studio 2015 Enterprise - 企业版 - 简体中文 3.89GB http://pan.baidu.com/s/1bn ...