上位机框架 QML + QT
文章平均质量分 86
QT\QML
高亚奇
医疗仪器软件、上位机开发者
展开
-
Qt Quick小项目示例 - 登陆界面
新建一个 "Qt Quick Application - empty" 工程,分别添加 “main.qml” 、“LineInput.qml”、“ Button.qml” 这三个 qml 文件。用 QML 设计一个应用的登陆界面。原创 2023-12-13 10:54:03 · 41 阅读 · 0 评论 -
QML与 C++ 交互(二)
我们知道, QML 其实是对 JavaScript 的扩展,融合了 Qt Object 系统,它是一种新的解释型的语言, QML 引擎虽然由 Qt C++ 实现,但 QML 对象的运行环境,说到底和 C++ 对象的上下文环境是不同的,是平行的两个世界。没错,的确是一样的。只要是信号或者槽,都可以直接在 QML 中访问,你可以把 C++ 对象的信号连接到 QML 中定义的方法上,也可以把 QML 对象的信号连接到 C++ 对象的槽上,还可以直接调用 C++ 对象的槽或信号。信号的参数,一般就是你定义的属性。原创 2023-12-13 10:14:23 · 89 阅读 · 0 评论 -
QML与 C++ 交互(一)
我们将 QmlCpp 的头文件引用进来,然后定义一个 QmlCpp 类的实例,调用设置整型的函数,并将这个 C++ 实例注册到 Qml 引擎上下文中标示为 “QmlCpp” 的名字, 这样 Qml 中就可以通过 QmlCpp 来访问这个 C++ 实例。然后增加一个信号,这个信号后一章节会介绍,这节我们先关注属性的访问 这句代码的意思是定义一个名称为 value 的属性,读取属性的函数是 getValue,写入属性的函数是 setValue,当属性变化是触发的信号是 valueChanged。原创 2023-12-12 17:27:42 · 110 阅读 · 0 评论 -
【QML Model-View】TableView 使用
TableView 就是 Qt Quick 为表格式呈现数据提供的组件。想必兄台用过 Excel,可以藉此想象下 TableView 的效果。TableView 与 ListView 类似,相比之下多了滚动条、挑选、可调整尺寸的表头等特性。它的数据也通过 Model 来提供,你可以使用 ListModel、XmlListModel,也可以使用 C++ 中从 QAbstractltemModel、QAbstractTableModel 等继承而实现的 Model。原创 2023-12-13 10:01:16 · 346 阅读 · 0 评论 -
【QML Model-View】ListView
Model-View-Controller (MVC) 是源自 SmallTalk 的一个设计模式,在构建用户界面时经常用到。作为一种经典到不能再经典的架构模式,MVC 大行其道有其必然的道理。通过把职责、 性质相近的成分归结在一起,不相近的进行隔离,MVC 将系统分解为模型、视图、控制器 三部分,每一部分都相对独立,职责单一,在实现过程中可以专注于自身的核心逻辑。MVC 是对系统复杂性的一种合理的梳理与切分,它的思想实质就是“关注点分离”。原创 2023-12-13 09:58:26 · 48 阅读 · 0 评论 -
Qt Quick 常用控件:TextInput, TextEdit(编辑框)
如果 echoMode 不为 Textlnput.Normal,那么 displayText 属性就保存显示给用户的文本,而 text 属性则保存实际输入的文本,比如你设定 passwordCharacter 为 "*", echoMode 为 Textlnput.Password,那么 displayText 属性内保存的就是一串 "*"。代码先设置了 TextInput 获得焦点,这样输入字符会直接显示,等输入完成按下回车键以后使 TextInput 失去焦点,这样输入的字符会用密码掩码显示。原创 2023-12-13 09:42:36 · 189 阅读 · 0 评论 -
Qt Quick 常用元素:ComboBox(下拉列表) 与 ProgressBar(进度条)
也可以是 ListModel,当使用 ListModel 时,可以通过 textRole 属性指定列表条目对应的 model 内的 role,如果不设定, 则默认使用第一个 role。当 ComboBox 可编辑时,一个 Textlnput 对象叠加到 Button 上面,Textlnput 左边与 Button 左边对齐,右边留一些位置给那个代表 “下拉” 含义的小图标—这个小图标的宽度由 ComboBoxStyle 的 dropDownButtonWidth 属性来决定。原创 2023-12-13 09:36:03 · 162 阅读 · 0 评论 -
Qt Quick 常用元素:RadioButton(单选框),CheckBox(复选框) 与 GroupBox(分组框)
先介绍一下 ExclusiveGroup。ExclusiveGroup (互斥分组)本身是不可见元素,用于将若干个可选择元素组合在一起, 供用户选择其中的一个选项。你可以在 ExclusiveGroup 对象中定义 RadioButton、CheckBox、Action 等元素,此时不需要设置它们的 exclusiveGroup 属性;原创 2023-12-13 09:32:34 · 200 阅读 · 0 评论 -
Qt Quick 常用控件:Button(按钮)用法及自定义
Button 是很常见的控件,Qt 助手的说明如下:根据以上可知,在 QML 中要使用 Buttoon,需要先导入控件库 import QtQuick.Controls 2.5,使用其它控件也是一样,都需要导入这个库。Window {width: 640Button{x:100 // 设置按钮的横坐标y:100 // 设置纵坐标text:"我是按钮" // 按钮文本// 信号槽连接console.log("我被点击了")原创 2023-12-13 09:27:32 · 205 阅读 · 0 评论 -
QML 信号与槽
在 QML 中自定义信号,默认有一个的信号处理程序(槽函数)自动与之相关联,信号处理程序必须在发出信号的对象定义中声明。Window {id: windowwidth: 200// 自定义信号Text {// 发送信号// 信号处理函数(格式:on<Signal>)点击窗口可以查看到 text 变成 OK 说明成功。原创 2023-12-12 15:42:00 · 327 阅读 · 0 评论 -
QML 锚布局
anchors 提供了一种方式,让你可以通过指定一个元素与其他元素的关系来确定元素在界面中的位置,即锚布局。你可以想象一下,每个 Item 都有 7 条不可见的辅线:左(left)、水平中心(horizontalCenter)、 上(top)、下(bottom)、右(right)、垂直中心(verticalCenter)、基线(baseline)。原创 2023-12-12 15:45:19 · 24 阅读 · 0 评论 -
QML 定位器与布局管理器
还有其它的一些属性,请参看 Qt SDK。其实可以把流布局想象成英文文字排版系统,一个 item 对应一个单词,横版模式时,从左到右,一行一行安排单词的位置,当接近一行的宽度时,如果下一个单词摆上去就会超出行宽,那就把这个单词放到下一行上,继续排排排……竖版模式也是类似的。注意:不过有一点需要的是,定位器不会改变它管理的元素的大小,与你使用 Qt Widgets 中的布局管理器的经验不同,不过如果你希望使用 “自动根据界面尺寸变化调整孩子们的尺寸” 这种特性,可以使用 Qt Quick 中的布局管理器。原创 2023-12-12 15:47:56 · 56 阅读 · 0 评论 -
QML 组件(Compontents)
Component 是由 Qt 框架或开发者封装好的、只暴露了必要接口的 QML 类型,可以重复利用的元素。一个 Component 就像一个黑盒子,它通过属性、信号、函数和外部世界交互。QML 主要提供两种不同的方法来创建组件:一个 Component 可以定义在独立的 qml 文件中(例如 MyButton.qml),也可以嵌入到 qml 文档中来定义。原创 2023-12-12 15:37:27 · 51 阅读 · 0 评论 -
QML 基本元素
元素可以被分为与。一个可视化元素(例如矩形框 Rectangle)有着几何形状并且可以在屏幕上显示。一个非可视化元素(例如计时器 Timer)提供了常用的功能,通常用于操作可视化元素。现在我们将专注于几个基础的可视化元素,例如 Item(基本项元素),Rectangle(矩形框),Text(文本),Image(图像)和 MouseArea(鼠标区域)。原创 2023-12-12 15:25:18 · 18 阅读 · 0 评论 -
QML 属性(Properties)
但不幸的是这样的代码阅读性很差。QML 对象由类型指定,一般与类型同名,名称以大写字母开头,后面跟一对大括号,在括号中包含了对象特性定义,包括 id、属性、信号、信号处理器、方法、附加属性和附加信号处理器等,当然也可以包含子对象。属性是对象的特性之一,可以分配一个静态的值或者绑定一个动态表达式,属性和值由一个冒号隔开,使用 “属性 : 值” 语法进行初始化,比如前面代码中。在 QML 语言的语法中,有一个附加属性的概念,这是附加到一个对象上的额外的属性。列表是包括在方括号内,以逗号分隔的多个元素的集合。原创 2023-12-13 10:59:48 · 58 阅读 · 0 评论 -
QML 类型
插件编写者和应用程序开发人员可以提供定义为 QML 文档的类型。当 QML 文档对 QML 导入系统可见时,它定义一种类型,该类型由文件名减去文件扩展名标识。因此,如果存在一个名为 “MyButton.qml” 的 QML 文档,它将提供名为 MyButton 的对象类型定义,该对象类型可在 QML 应用程序中直接使用。原创 2023-12-12 15:19:19 · 22 阅读 · 0 评论 -
QML语法对象
如果你用过 C++ 或 Java,肯定熟悉类(class)。在 ECMAScript 中并没有 “类” 这个词, 其对应的是 “对象定义”,不过这太拗口了,因此还是诜择使用 “类” 这个词。对象是由 new 运算符加上要实例化的类型的名字创建的。在语法上与 C++ 类似。如果类的构造函数没有参数,括号可以省略;如果有多个参数, 则必须使用括号。为了避免混乱,笔者建议都使用括号。原创 2023-12-12 15:16:07 · 18 阅读 · 0 评论 -
QML语法基础
Qt Quick 为 Qt 引入了一门叫 QML(Qt Meta/Modeling Language)的脚本语言,它是 ECMAScript 标准的实现。所以 QML 语法是在 ECMAScript 语法的基础上实现的。ECMAScript 语言的标准是由 Netscape、Sun、微软、Borland 等公司基于 JavaScript 和 JScript 锤炼、定义出来的。ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。原创 2023-12-12 15:11:41 · 19 阅读 · 0 评论 -
QML、Qt Quick 什么是
QML 是一种用户界面规范和编程语言。它允许开发人员和设计师创建高性能、流畅的动画和视觉吸引人的应用程序。QML 提供了一种高度可读、声明性、类似 JSON 的语法,支持与动态属性绑定相结合的命令式 JavaScript 表达式。像脚本语言一样定义界面的元素是对 ECMAScript 标准的扩展(参见:JavaScript)提供了建立一颗 QML 元素对象树的机制支持 QML 元素和基于 QObject 的 C++ 对象之间的交互QML 包含了一套 QML 元素。原创 2023-12-12 15:06:36 · 51 阅读 · 0 评论 -
QML 快速入门
qml是一种描述性的脚本语言,语法类似css, 可以在脚本中创建图像对象,并支持各种特效,并且文件是以.qml结尾。qml文档描述 了一个对象树。各个元素可以以嵌套的方式来组合成复杂的图形功能。qml是Qt quick的核心组件之一。qml是运行时解释,不需要重新编译。qml支持自定义属性,调用自定义属性值显示文本信息qml文件中,自定义属性以关键字property开始,然后是说明类型,最后是属性的名称和值。qml没有提供直接的圆形组件,所以,这里自定义圆形组件。原创 2023-12-12 15:02:06 · 271 阅读 · 0 评论