四 、QML常用控件的使用详解

news2025/6/9 8:50:45

在Qt Quick的世界里,window对象用于创建一个与操作系统相关的顶层窗口,而其他的元素,如Text Rectangle,Image等,都睡Windows提功能场景里面的显示对象,Window还有一个派生类,即是大名鼎鼎的Application Window ,可以作为QML 文档的根对象。

  1. windows窗口对象属性的说明

import QtQuick.Window 2.1

通过上面的引用,Window对象就可以创建一个最顶层的窗口作为Qt Quick的活动窗口。他自动设置好了窗口的基本属性,例如 标题 系统按钮 图标等。也可以手动进行编辑window基本对话框显示的属性更改。windows基本对话框完成之后,就可以引用QtQuick 2.x QtQuick.Controls 1.x 等模块开始起作用了

  1. Window属性设置

Window 属性有mininumWidth,minimunHeight 来限制窗口的最小尺寸,对于管理属性如下介绍:

Window. Windowed 设置窗口占屏幕的一部分

Window.Minimized 最小化到任务栏的一个图标

Window.Maximized 最大化

Window.FullScreen 全屏显示

Window.AutomaticVisibility 给window设置一个默认的显示状态

Window.Hidden 隐藏窗口

  1. color 属性的设置

color属性用来谁窗口的颜色,可以使用 blue ,“#897776”,Qt.rgba()等形式;

  • contentOrientation属性的设置

Qt.PrimaryOrientaton 使用显示设备的首选方向

Qt.LandscapeOrientation 横屏

Qt.PortraitPrientation 竖屏

Qt.InvertedLandscapeOrientation 先对横屏旋转180度

  1. 模态属性

一个窗口的状态由modality(模态)属性决定的,

Qt.NonModal 非模态

Qt.WindowModal 窗口级别的模态,设置此属性的窗口只针对某一个窗口的模态的,子窗口相对父窗口是是模态的。

Qt.ApplicationModal 应用级别的模态,设置此属性会阻止同一应用的其他事件输入的响应;

  • ApplicationWindow介绍

ApplicationWindow是Window的派生类,使用他需要使用下面语句引入Controls模块

import QtQuick.Controls 1.2

如果学习过Qt ApplicationWindow 有点像QMainWindow 窗口有menuBar,toolBar等状态栏。

  1. 基本控件的使用介绍

如果进行过GUi开发,想必对控件的使用不会不熟悉,例如Button ListTable 等;

  1. Rectangle

下面就对一个矩阵对话框控件的创建和显示进行讲解

Rectangle{
width: 320    //宽
height:480  //长
color :"blue"  //内部颜色
border.color:"#808080"   //边框颜色
border.width :2  //边框宽度
radius:12  //四周弧度
}
  1. Item

Item是QtQuick所有可视元素的基类,其属性有 x、y、width、height 、anchoring、key、z、rotation等,具体的使用如下,修改自定义Rectangle的显示位置等信息;

Item{
    Rectangle{
    x:20    //可以进行设置显示的位置
    y:20
    id: win1
    width: 320    //宽
    height:480  //长
    color :"blue"  //内部颜色
    border.color:"#808080"   //边框颜色
    border.width :2  //边框宽度
    radius:12  //四周弧度
    }
    Rectangle{
    id:win2
    x:123
    y:30
    width: 320    //宽
    height:480  //长
    color :"blue"  //内部颜色
    border.color:"#808080"   //边框颜色
    border.width :2  //边框宽度
    radius:12  //四周弧度
    }
}
  1. 使用锚(anchoring)布局定位器

anchors 提供了一种,确定元素显示的位置定位

你可以理解为,每个Item都有七条不可见的锚线:left,right,top,bottom,horizontalCenter,verticalCenter

使用anchors 布局的时候,除了对齐锚线,还可以指定控件的四周的留白,margin代表着四周的留白;

指定topMargin bottomMargin,leftMargin,rightMargin 如上图

Rectangle{
    width:200
    height:300
        Rectangle{
        //设置rectangle 与父窗口左上对齐
        anchors.left :parent.left
        anchors.leftMargin:20
        anchors.top:parent.top
        anchors.topMargin:20
        x:20    //可以进行设置显示的位置
        y:20
        id: win1
        width: 320    //宽
        height:480  //长
        color :"blue"  //内部颜色
        border.color:"#808080"   //边框颜色
        border.width :2  //边框宽度
        radius:12  //四周弧度
        }
        Rectangle{
        //设置rectangle 靠近win1 对话框显示
        anchors.left :win1.right   //设置win2 在win1右边显示
        anchors.leftMargin:20
        anchors.top:win1.top
        anchors.topMargin:20

        id:win2
        x:123
        y:30
        width: 320    //宽
        height:480  //长
        color :"blue"  //内部颜色
        border.color:"#808080"   //边框颜色
        border.width :2  //边框宽度
        radius:12  //四周弧度
        }
}

具体如下图显示

  1. 按键Key的使用

Keys对象也是Qt Quick提供的,专门供Item处理按键事件的对象。

import QtQuick 2.2
Rectangle{
    width:300;
    height:200;
    color :"red";
    focus:true;
    Keys.enabled:true;
    Keys.onEscapedPressed:Qt.quit();  //当esc按键点击的时候 就会处理后边关闭应用的借口调用
    Keys.onBackPressed:Qt.quit();

}
  1. Text属性介绍

Text属性就是label标签的字体显示

import QtQuick 2.2
Rectangle{
    width:200;
    height:100;
    text:"hello world!"; //在屏幕上显示helloworld字样
    font.bold:true  //对字体属性设置 加粗
    font.underline:true //字体下面显示横线
    anchors.centerIn :parent //显示在窗口的中间
}

  1. Button 控件的讲解

按是Gui软件中使用频率比较高的一控件,有Clicked release等触发事件;

import QtQuick 2.2
import QtQuick.Control 1.2
Rectangle{
    width:320
    height:240
    Button{
        text:"Ok"
        anchors.centerIn:parent
        onClicked:{
            Qt.quit(); //点击信号槽定义和书写
        }
    }
}
  1. FileDialog

FileDialog 是Qt Quick 中的文件对话框大可以用来选择已有的文件,文件夹,支持单选,多选,也可以用来保存文件或创建文件夹时让客户提供一个名字

FileDialog{
    id:filedialog
    title:"please select a file,"
    nameFilters:["Image Files (*.jpg)]  //过滤图片文件
    selectednameFilter:"Image Files(*.jpg)"  // 过滤的名字
    selectMultiple:true  //设置多选
    onASsccepted:{
        imageViewer.source = fileDialog.fileUrls[0] //保存路径
}
}

总结

通过今天的讲解,就把QtQuick 初步使用的基础详细的介绍了一遍,例如Text Button Key的使用,如果一路操作下来应该对Qml编写的语法有了初步的理解;接下来我们开始对ECMAScript语言规范进行详细的介绍,这样就能对qml语言有了清晰的认知,敬请期待!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于DSP+FPGA高速运动控制器设计

基于“PC运动控制器”结构的开放式机器人运动控制系统能够充分利用PC开放程 度高、通用性好、处理能力强等特点以及运动控制器运算速度快、实时性能好、控制能 力强等特点,因此得到较快发展,成为目前的研究热点。但目前采用此种结构的开放式 机器人运动控…

3D模型深度生成网络【ShapeAssembly】

推荐:使用 NSDT场景设计器 快速搭建 3D场景。 我们提出了一个深度生成模型,该模型学习在ShapeAssembly中编写新颖的程序,ShapeAssembly是一种用于建模3D形状结构的特定领域语言。 执行 ShapeAssembly 程序会生成一个由部件代理长方体的分层连…

HashMap put() 方法源码分析

文章目录一、前置知识红黑树定义二、构造方法HashMap()HashMap(int initialCapacity, float loadFactor)tableSizeFor(int cap):计算hashmap初始容量三、put 方法源码1. put()hash(Object key):计算key的hash值2. putVal()通过 hash 计算数组下标3. resi…

jdk版本切换工具jenv使用指南

1.下载jenv包 下载链接:GitHub - FelixSelter/JEnv-for-Windows: Change your current Java version with one line 下载包的文件:JEnv.zip 然后解压缩,放到一个目录下,我这里放到了目录:D:\tools\JEnv 2.将JENV添…

chatGPT学习

最近看到一个火爆的AI智能聊天工具:ChatGPT。它的功能:文能写文章,武能改BUG,马斯克对它的评价是“Scary Good!”。我非常感兴趣,就试用了一下,感觉还不错,希望大家能喜欢。 ChatGPT&#xff0…

炼石完成近亿元A+轮融资,冲刺1500亿数据安全赛道

近日,炼石宣布完成近亿元A轮融资,本轮融资由重庆科技成果转化基金独家投资,由清科资本担任独家财务顾问,这是继安天科技、安云资本、国科嘉和、腾讯等多轮之后的新一轮投资。随着本轮资金的引入,炼石将更深入研发迭代以…

MASA Stack 1.0 发布会讲稿 —— 产品篇

架构 基于MASA的云原生技术架构 我们基于MASA去做了一个云原生技术架构,左下角的MASA Blazor主要是为我们去集成一个多端的UI能力,具体的使用场景将在实践篇为大家介绍——MASA Blazor如何去做多端的 接着就是集成非业务能力的MASA Framework&#xff…

1.Docker 简介

Docker 简介 什么是 Docker? Docker的英文翻译是“搬运工”的意思,他搬运的东西就是我们常说的集装箱Container,Container 里面装的是任意类型的 App,我们的开发人员可以通过 Docker 将App 变成一种标准化的、可移植的、自管理的…

C语言位运算

所谓位运算,就是对一个比特(Bit)位进行操作。比特(Bit)是一个电子元器件,8个比特构成一个字节(Byte),它已经是粒度最小的可操作单元了。C语言提供了六种位运算符&#xf…

linux系统下centos7 或 openwrt安装 使用 SpeedTest 测速

博主博客 https://blog.uso6.com https://blog.csdn.net/dxk539687357 一、测试本地是否安装 python(已安装可以跳过) 1.在命令行中输入rpm -qa | grep python36 判断是否已经安装 python3。 2.如果没有安装输入 yum install python36 进行安装。 二、测试 CentOS 到 Speed Te…

响应式布局以及提交网站

1.慕客协作平台1. /摹客官网地址: https://www.mockplus.cn/ 注册一个账号2. 下载moke ps插件 3. PS 安装/摹客/蓝湖插件3. 打开PS/摹客/蓝湖插件4. 上传(需要切图,需要先标注切图)5. 查看项目6. 邀请成员进入(分享按钮…

【Java 面试合集】简述下自定义异常的应用场景

简述下自定义异常的应用场景 1. 概述 如上图所示,我们想回答这个问题就要了解异常的基本结构。哪些是我们可以控制的,哪些是我们不能控制的。 也许有人会问了,其实在逻辑中可以多加判断,为什么要需要自定义呢。 其实判断的内容无…

rigol 普源MSO5104数字示波器技术参数

MSO5000系列数字示波器是基于RIGOL UltraVision II代技术的高性能中低端数字示波器,采用9英寸多点电容触摸屏,集7种仪器于一身。具有超高的采样带宽比和存储深度等优异的性能指标,以及精巧便携的外观设计。高集成度的ASIC芯片组和创新性的前端…

大数据技术架构(组件)27——Spark:CacheCheckpoint BroadcastAccumulate

2.1.7、Cache&Checkpoint&Broadcast&Accumulate2.1.7.1、Cache2.1.7.1.1、Cache原理RDD是通过iterator进行计算的。当然该方法是内部调用的,不会暴露给用户使用;1、CacheManager通过BlockManager从Local或者Remote获取数据,然后通…

网站虚拟主机的流量为什么会受限制?

虚拟主机流量限制是指网站所在的虚拟主机提供商对网站流量的限制,网站的流量超出限制的话将会受到一定影响,从而影响网站的正常运行。那么网站虚拟主机流量为什么会受限制?本文将详细介绍。 一、虚拟主机流量限制的主要原因 1、虚拟主机提供商设置的流量…

SpringBoot/SpringCloudAlibaba(ruoyi)中cron表达式(配置每天指定整点执行)读取配置文件

场景 若依微服务版手把手教你本地搭建环境并运行前后端项目: 若依微服务版手把手教你本地搭建环境并运行前后端项目_霸道流氓气质的博客-CSDN博客 在上面的基础上某业务需要配置cron表达式,该表达式需要指定每天的指定的整点执行, 比如每…

如何借力Alluxio推动大数据产品性能提升与成本优化?

内容简介 随着数字化不断发展,各行各业数据呈现海量增长的趋势。存算分离将存储系统和计算框架拆分为独立的模块,Alluxio作为如今主流云数据编排软件之一,为计算型应用(如 Apache Spark、Presto)和存储系统&#xff0…

buu [网鼎杯 2020 青龙组]boom 1

题目描述: 一个应用程序,打开了是一串要运行的代码: 题目分析: 首先,跟着代码走下1去得到: 对密文进行md5解密,得到:输入后继续跟着代码走下去,得到:好家伙&#xff0…

RabbitMQ 部署指南

RabbitMQ 部署指南RabbitMQ部署指南1.单机部署1.1.下载镜像1.2.安装MQ2.安装DelayExchange插件2.1.下载插件2.2.上传插件2.3.安装插件3.集群部署2.1.集群分类2.2.获取cookie2.3.准备集群配置2.4.启动集群2.5.测试2.5.1.数据共享测试2.5.2.可用性测试4.镜像模式4.1.镜像模式的特…

太酷了,用Python实现一个动态条形图!

大家好,我是小F~说起动态条形图,小F之前推荐过两个Python库,比如「Bar Chart Race」、「Pandas_Alive」,都可以实现。今天就给大家再介绍一个新的Python库「pynimate」,一样可以制作动态条形图,…