当前位置: 首页 > news >正文

Qml之基本控件

一.Qml常用控件

1.Text(显示普通文本和富文本)

1.1显示普通文本:

Window {

    visible: true

    width: 320

    height: 240

    title: qsTr("Hello World")

    Text {

          text: "Hello World!"

          font.family: "Helvetica"

          font.pointSize: 24

          color: "red"

    }

}

1.2显示富文本。

Window {

    visible: true

    width: 320

    height: 240

    title: qsTr("Hello World")

    Text {

        text: "<b>Hello</b> <i>World!</i>"

    }

}

2.Button(按钮控件)

需要导入QtQuick.Controls 2.xx,如import QtQuick.Controls 2.12。

Window {

    visible: true

    width: 200

    height: 120

    title: qsTr("Hello World")

    Button {

        text: "Ok"

        onPressed: { //下压

            console.log("pressed " + text)

        }

        onReleased: { //释放

            console.log("released " + text)

        }

        onClicked: { //单击,触发一次pressed和一次released

            console.log("click " + text)

        }

        onDoubleClicked: { //双击

            console.log("doubleClick " + text)

        }

        onPressAndHold: { //长按,下压后不松手一段时间后触发

            console.log("pressAndHold " + text)

        }

        onCanceled: { //下压后,在释放之前失去焦点

            console.log("cancel " + text)

        }

    }

}

onCanceled的触发方法:按住按钮不放,然后键盘按Alt+Tab,让它失去焦点。

3.RadioButton(单选按钮)

Window {

    visible: true; width: 200; height: 200

    ColumnLayout {

        RadioButton {

            checked: true

            text: "r1"

        }

        RadioButton {

            text: "r2"

        }

        RadioButton {

            text: "r3"

        }

    }

}

4.CheckBox(多选按钮)

import QtQuick 2.12

import QtQuick.Window 2.12

import QtQuick.Controls 2.12

import QtQuick.Layouts 1.12

Window {

    visible: true; width: 200; height: 200

    ColumnLayout {

        CheckBox {

            id: c1

            checked: true

            text: "c1"

        }

        CheckBox {

            id: c2

            checked: false

            text: "c2"

        }

        CheckBox {

            id: c3

            checked: true

            text: "c3"

        }

    }

    Component.onCompleted: {

        console.log(c1.checked)

        console.log(c2.checked)

        console.log(c3.checked)

    }

}

5.ComboBox(下拉选项)

import QtQuick 2.12

import QtQuick.Window 2.12

import QtQuick.Controls 2.12

Window {

    visible: true; width: 200; height: 200

    ComboBox {

        model: ["1111", "2222", "3333"]

        onCurrentIndexChanged: {

            console.log(currentIndex)

        }

    }

}

6.ListView(列表)

import QtQuick 2.12

import QtQuick.Window 2.12

import QtQuick.Controls 2.12

Window {

    visible: true; width: 400; height: 300

    Column {

        ListView {

            id: list

            width: 100

            height: 200

            model: [

                { name: '宝马', price: '10'},

                { name: '奔驰', price: '50'},

                { name: '大众', price: '100'}

            ]

            delegate: ItemDelegate {

                width: list.width

                text: modelData.name + ": " + modelData.price + (list.currentIndex === index ? ' √' : '')

                background: Rectangle {

                    color: getColor()

                    function getColor() {

                        return Qt.rgba(Math.random(), Math.random(), Math.random())

                    }

                }

                onClicked: {

                    list.currentIndex = index

                    console.log(JSON.stringify(modelData))

                }

            }

            ScrollBar.vertical: ScrollBar {}

        }

        Button {

            onClicked: {

                let model = list.model

                model.push({name: "123", price: "123"})

                list.model = model

            }

        }

    }

}

7.Timer(定时器)

import QtQuick 2.12

import QtQuick.Window 2.12

import QtQuick.Controls 2.12

Window {

    visible: true; width: 200; height: 120

    Label {

        Timer {

            interval: 1000

            repeat: true

            running: true

            triggeredOnStart: true

            onTriggered: {

                parent.text = Qt.formatDateTime(new Date(), 'yyyy-MM-dd hh:mm:ss')

            }

        }

    }

}

8.SwipeView(滑动窗口)

  说明:可以见手指滑动变换窗口

import QtQuick 2.12

import QtQuick.Window 2.12

import QtQuick.Controls 2.12

Window {

    visible: true; width: 200; height: 120

    SwipeView {

        id: view

        anchors.fill: parent

        Repeater {

            model: 3

            Rectangle {

                color: view.currentIndex == 0 ? 'red' : view.currentIndex == 1 ? 'yellow' : 'white'

                Text {

                    anchors.centerIn: parent

                    text: 'text' + view.currentIndex

                }

            }

        }

    }

    PageIndicator {

        anchors.bottom: view.bottom

        count: view.count

        currentIndex: view.currentIndex

    }

}

9.输入框

 TextInput{

                id:intpu_Z

                anchors.left: parent.left

                anchors.leftMargin: 5

                anchors.right: parent.right

                anchors.rightMargin: 5

                anchors.verticalCenter: parent.verticalCenter

                color: "white"

                font{

                    pointSize: maps_Root.fontSize

                    bold: true

                }

                clip: true

            }

10.Item

   Item是基本的QML类型,所有可视类型都是Item的子类。  

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

11.Rectangle

   在 QML 中,Rectangle 是一个常用的基础图形元素,用于绘制矩形形状。它继承自 Item 并提供了额外的属性来定义矩形的尺寸、颜色、边框等。

以下是一些 Rectangle 元素的关键属性和用法示例:

关键属性

width 和 height:定义矩形的宽度和高度。

color:定义矩形的填充颜色。

border.color:定义矩形边框的颜色。

border.width:定义矩形边框的宽度。

radius:定义矩形角的圆度,用于创建圆角矩形。

gradient:定义矩形的渐变填充,而不是纯色填充。

用法示例

以下是一个简单的 QML 示例,展示了如何使用 Rectangle 元素:

import QtQuick 2.15

Rectangle {

    width: 200

    height: 100

    color: "blue"

    border.color: "black"

    border.width: 4

    radius: 10

    // 在矩形中添加文本

    Text {

        text: "Hello, Rectangle!"

        color: "white"

        anchors.centerIn: parent // 使文本在矩形中居中

    }

}    

12.Dialog

import QtQuick 2.10

import QtQuick.Window 2.10

import QtQuick.Controls 2.3

ApplicationWindow{

    visible: true;

    width: 1280;

    height: 720;

    Dialog {

        id: dialog

        x:(parent.width-width)/2

        y:(parent.height-height)/2

        implicitWidth: 500;

        implicitHeight: 300;

        title: "Title"

        modal: true;

        standardButtons: Dialog.Ok | Dialog.Cancel

        onAccepted: console.log("Ok clicked")

        onRejected: console.log("Cancel clicked")

    }

    Button{

        text: "open";

        onClicked: {

            dialog.open();

        }

    }

}

相关文章:

Qml之基本控件

一.Qml常用控件 1.Text(显示普通文本和富文本) 1.1显示普通文本&#xff1a; Window { visible: true width: 320 height: 240 title: qsTr("Hello World") Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color:…...

【Java从入门到放弃 之 Stream API】

Java Stream API Stream API行为参数化传递代码Lambda表达式Lambda 表达式的语法方法引用 Lambda 表达式的实际应用集合操作并发编程 Lambda 表达式的注意事项总结 Stream API Java8提供了一个全新的API - Stream。引入这个Stream的主要目的&#xff0c;一个是可以支持更好的并…...

Ruby On Rails 笔记1——Rails 入门

突然想跟着官方文档把Ruby On Rails过一遍&#xff0c;把一些有用的记下来就可以一直看了&#xff0c;do它! https://guides.rubyonrails.org/v7.2/ 注&#xff1a;官网是英文文档&#xff0c;我自己翻译了一下&#xff0c;不确保完全准确&#xff0c;只供自己学习开发使用。 …...

高效开发 Python Web 应用:FastAPI 数据验证与响应体设计

高效开发 Python Web 应用&#xff1a;FastAPI 数据验证与响应体设计 目录 &#x1f9d1;‍&#x1f4bb; FastAPI 的数据验证系统与 Pydantic 模型&#x1f4e6; 响应体与模型&#xff1a;定义响应数据的最佳实践&#x1f504; 响应模型与查询参数的结合&#xff1a;增强灵活…...

基于“开源 2+1 链动 O2O 商城小程序”的门店拉新策略与流程设计

摘要&#xff1a;在数字化商业浪潮席卷之下&#xff0c;实体门店面临着激烈的市场竞争&#xff0c;如何高效拉新成为关乎门店生存与发展的关键问题。本文聚焦于“开源 21 链动 O2O 商城小程序”&#xff0c;深入探讨结合多种手段的门店拉新策略及详细流程设计。通过剖析到店扫码…...

33.5 remote实战项目之设计prometheus数据源的结构

本节重点介绍 : 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写入数据 准备工作 新建项目 prome_remote_read_write设计prometheus 数据源的结构初始化 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写…...

微服务springboot详细解析(一)

目录 1.Spring概述 2.什么是SpringBoot&#xff1f; 3.第一个SpringBoot程序 4.配置参数优先级 5.springboot自动装配原理 6.SpringBootApplication&SpringApplication.run 7.ConfigurationProperties(prefix "") 8.Validated数据校验 29、聊聊该如何写一…...

深入探讨Go语言中的双向链表

简介 双向链表是链表家族中的一种高级结构&#xff0c;每个节点不仅指向下一个节点&#xff0c;还指向上一个节点。今天&#xff0c;我们将学习如何在Go语言中实现和操作这种灵活的数据结构。 双向链表的优缺点 优点&#xff1a; 可以从任一方向遍历链表&#xff0c;灵活性高…...

Fastapi + vue3 自动化测试平台---移动端App自动化篇

概述 好久写文章了&#xff0c;专注于新框架&#xff0c;新UI界面的实践&#xff0c;废话不多说&#xff0c;开搞 技术架构 后端&#xff1a; Fastapi Airtest multiprocessing 前端&#xff1a; 基于 Vue3、Vite、TypeScript、Pinia、Pinia持久化插件、Unocss 和 Elemen…...

ElasticSearch easy-es 聚合函数 group by 混合写法求Top N 词云 分词

1.将用户访问记录表数据同步到ES&#xff0c;并且分词&#xff0c;获取用户访问最多前十条词语。 Elasticsearch、Easy-es 快速入门 SearchAfterPage分页 若依前后端分离 Ruoyi-Vue SpringBoot 使用结巴分词器 <!-- 分词器--><dependency><groupId>com.hua…...

在 ASP.NET C# Web API 中实现 Serilog 以增强请求和响应的日志记录

介绍 日志记录是任何 Web 应用程序的关键方面。它有助于调试、性能监控和了解用户交互。在 ASP.NET C# 中&#xff0c;集成 Serilog 作为记录请求和响应&#xff08;包括传入和传出的数据&#xff09;的中间件可以显著提高 Web API 的可观察性和故障排除能力。 在过去的几周里&…...

2024年顶级小型语言模型前15名

本文&#xff0c;我们将深入了解2024年备受瞩目的十五款小型语言模型&#xff08;SLMs&#xff09;&#xff0c;它们分别是Llama 3.1 8B、Gemma2、Qwen 2、Mistral Nemo、Phi-3.5等。这些SLMs以其精巧的体积和高效率著称&#xff0c;它们不需要依赖庞大的服务器资源&#xff0c…...

精通 Python 网络安全(一)

前言 最近&#xff0c;Python 开始受到越来越多的关注&#xff0c;最新的 Python 更新添加了许多可用于执行关键任务的包。我们的主要目标是帮助您利用 Python 包来检测和利用漏洞&#xff0c;并解决网络挑战。 本书将首先带您了解与网络和安全相关的 Python 脚本和库。然后&…...

【python自动化二】pytest集成allure生成测试报告

pytest本身不会直接生成测试报告&#xff0c;而allure是一种生成测试报告的公共插件&#xff0c;可与多种测试框架配合生成测试报告&#xff0c;本文介绍下如何集成allure生成测试报告。 1.allure安装 1.安装allure-pytest 先安装allure的pytest插件&#xff0c;用于在pytes…...

网络版本的通讯录青春版(protobuf)

环境搭建 Protobuf 还常⽤于通讯协议、服务端数据交换场景。 因为我们主要目的只是为了学习protobuf&#xff0c;因此对于客户端&#xff0c;原本应该具备&#xff1a; 新增⼀个联系⼈ ◦ 删除⼀个联系⼈ ◦ 查询通讯录列表 ◦ 查询⼀个联系⼈的详细信息 这样四个功能。 …...

开源模型应用落地-安全合规篇-用户输入价值观判断(三)

一、前言 在深度合规功能中,对用户输入内容的价值观判断具有重要意义。这一功能不仅仅是对信息合法性和合规性的简单审核,更是对信息背后隐含的伦理道德和社会责任的深刻洞察。通过对价值观的判断,系统能够识别可能引发不当影响或冲突的内容,从而为用户提供更安全、更和谐的…...

神经网络入门实战:(十四)pytorch 官网内置的 CIFAR10 数据集,及其网络模型

(一) pytorch 官网内置的网络模型 图像处理&#xff1a; Models and pre-trained weights — Torchvision 0.20 documentation (二) CIFAR10数据集的分类网络模型&#xff08;仅前向传播&#xff09;&#xff1a; 下方的网络模型图片有误&#xff0c;已做修改&#xff0c;具…...

【Rust在WASM中实现pdf文件的生成】

Rust在WASM中实现pdf文件的生成 前言概念和依赖问题描述分步实现pdf转Blob生成URL两种方式利用localstorage传递参数处理图片Vec<u8>到pdf格式的Vec<u8>使用rust创建iframe显示pdf的Blob最后 前言 实现了一个通用的前端jpg转pdf的wasm,因为动态响应框架无法直接打…...

在MySQL中执行sum case when报错:SUM does not exist

1. 报错 在pgsql中能正常运行的一段SQL在MySQL中运行的时候报错了&#xff1a; SELECT DATE( hr.handle_time ) AS statsDate,SUM ( CASE WHEN hma.app_type IN ( 2, 5 ) THEN ch_money ELSE 0 END ) AS aliPayAmt,SUM ( CASE WHEN hma.app_type IN ( 1, 4 ) THEN ch_money EL…...

【openssl】相关指令

熟悉下相关概念 x509&#xff1a;证书标准pem和der&#xff1a;两种&#xff08;包括公私钥、证书签名请求、证书等内容的&#xff09;的格式&#xff0c;前者是文本形式&#xff0c;linux常用&#xff0c;后者是二进制形式&#xff0c;windows常用&#xff0c;仅仅是格式&…...

一款实用汉化工具快速安装使用指南 -- cheat-engine中文版安装教程入口

文章目录安装方式安装后在哪里找到&#xff1f;&#xff08;重点补全&#xff09;使用说明温馨提示首先呢&#xff0c;大家可能在用 cheat engine (CE修改器&#xff09;的时候呢&#xff0c;可能总是使用的是英文版&#xff0c;用的不太舒服啊&#xff0c;这个时候呢&#xff…...

别再为vLLM的max_model_len报错头疼了!手把手教你用Meta-Llama-3.1-8B-Instruct跑通第一个推理

从零突破vLLM 5.0.4实战&#xff1a;Meta-Llama-3.1-8B-Instruct推理全流程解析 当你第一次尝试用vLLM加载Llama 3.1这样的前沿大模型时&#xff0c;是否曾被突如其来的max_model_len报错打得措手不及&#xff1f;作为专为高性能推理设计的框架&#xff0c;vLLM在5.0.4版本中对…...

javaweb驾校考试车辆预约系统

目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分预约功能设计考试管理模块系统辅助功能技术实现参考项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 用户管理模块…...

2026届最火的AI辅助写作平台解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 一种基于自然语言处理以及深度学习模型的论文一键生成技术&#xff0c;其中&#xff0c;该技…...

查文献、搭框架、写综述太耗时?试试百考通AI开题报告,高效又安全

开题报告是毕业论文或学位研究的“第一张学术蓝图”&#xff0c;它不仅决定你的选题能否获批&#xff0c;更直接影响后续研究的逻辑性、深度与完成质量。然而&#xff0c;许多学生在撰写时常常感到无从下手&#xff1a;问题意识模糊、文献综述堆砌无主线、研究方法描述空泛、结…...

DistroAV技术解析:NDI网络视频传输的OBS插件解决方案

DistroAV技术解析&#xff1a;NDI网络视频传输的OBS插件解决方案 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 在当今的直播和内容创作领域&#xff0c;网络视频传输技…...

router.push(‘/‘)跳转不触发重定向

我来帮你分析为什么 router.push(/) 没有按照预期跳转到 /fenlei 路径。 首先让我查看相关的代码文件&#xff1a; router/index.js{path: /,component: Layout,redirect: /fenlei},已查看文件 index.vue 225-240 已查看文件 index.js 65-85 现在让我查看更多上下文&#xff0c…...

以采购管理系统为例,构建多角色AI智能体协作系统

成果演示&#xff08;基于 Trae Solo&#xff09; 1.构建智能体Trae Solo 支持智能生成智能体&#xff0c;输入角色及职能描述&#xff0c;即可得到角色智能体。在此构建需求分析智能体、架构设计智能体、前端智能体、后端智能体进行演示。2.创建任务 本文依照需求分析、架构设…...

mysql进阶--锁

锁的概述: 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问…...

从数据到诊断:深度学习驱动下的多模态抑郁症识别技术全景

1. 抑郁症识别技术的现状与挑战 抑郁症被称为21世纪的"心灵感冒"&#xff0c;全球约有3.5亿患者。传统诊断主要依赖医生问诊和量表评估&#xff0c;这种方式存在主观性强、耗时长的痛点。我在参与某三甲医院精神科数字化改造项目时&#xff0c;亲眼见证了一位资深医生…...