0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Qt Design Studio中创建连接和状态

我快闭嘴 来源:嵌入式小生 作者:嵌入式小生 2022-09-16 09:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


在Qt Design Studio中可以使用对话框创建应用软件UI的动态行为。在该工具中,有两种方式创建应用软件动态行为:

(1)使用Connections视图创建连接、编辑连接。

(2)使用States视图创建状态。

下文将分别描述这两种方式。

一、使用Connections视图创建连接

(1-1)关联信号和信号处理程序

我们可以在UI组件和应用程序之间创建连接,使它们能够相互通信

如果以代码的方式创建组件、信号和信号处理程序之间的连接,参见《QML信号和事件处理机制》;本文主要是使用Qt Design Studio图形界面来创建。

首先找到Qt Design Studio的Connections编辑视图,如果界面中没该视图,需要从下图所示的地方调出Connections编辑视图:

33254f38-34f2-11ed-ba43-dac502259ad0.png

调出后,Connections视图如下图所示:

33431644-34f2-11ed-ba43-dac502259ad0.png


按照如下步骤关联组件的信号和信号处理程序:

(1)转到Connections视图中的Connections选项卡。

(2)选择+(Add)按钮添加一个连接。

(3)双击『Target』列中的值,选择添加连接到信号的组件。

(4)双击『Signal Handler』列中的值,从组件可用的所有信号列表中选择连接将监听的信号。

(5)双击『Actions』列中的值,设计当发出信号时要执行的操作(此处可以使用JavaScript来指定操作)。可以右键单击一个连接,并在上下文菜单中选择『Open connection Editor』,可以在connection Editor中编辑该连接:

3369ef44-34f2-11ed-ba43-dac502259ad0.png

如果需要的信号处理程序没有列在『Signal Handler』列中,我们可以按照以下步骤添加:

(1)右键单击Navigator2D视图中的组件,然后在上下文菜单中选择『Add New Signal Handler』:

337efb5a-34f2-11ed-ba43-dac502259ad0.png

(2)在Signal字段中,选择要处理的信号:

33a28caa-34f2-11ed-ba43-dac502259ad0.png

(3)可以选择单选按钮以筛选列表,只显示经常使用的信号或属性更改。

(4)点击OK

在实际设计中,我们可以使用连接编辑器为Action和Assignment创建JavaScript表达式。Action选项用于将组件连接到信号,Assignment选项用于从另一个组件中获取属性值。

(1-2)在Qt Design Studio中设置属性绑定

在上述文中,描述了如何在Qt Design Studio中创建组件之间的信号和信号处理程序之间的连接。本小节将描述在Qt Design Studio中如何设置属性绑定。

属性绑定与设置信号和信号处理程序差不多是一样的,在Connections视图中,我们选择『Binding』一栏:

33bebe02-34f2-11ed-ba43-dac502259ad0.png

(1)选择+(Add)按钮,为当前选择的组件添加绑定。『Item』列显示组件ID。

(2)双击『Property』列中的值,选择要绑定到源属性的属性。

(3)双击『Source Item』列中的值,选择要使用的组件。

(4)双击『Source Property』列中的值,选择要将目标属性绑定到的属性。

我们还可以右键单击绑定,然后在上下文菜单中选择『Open binding Editor』,可以在binding Editor中设置绑定的JavaScript表达式:

33d76cd6-34f2-11ed-ba43-dac502259ad0.png

(1-3)指定动态属性

每个预设组件都有一组预设的属性,当然我们也可以添加特定组件类型或自定义组件的自定义属性。

可以将组件的属性绑定到动态表达式,从而为组件定义可被其他组件读取的全局属性。例如,可以为根组件指定可以在子组件中使用的全局属性。

在QML组件设计中,任何数据驱动的内容都应该作为相关组件的公共属性(别名属性)导出。

在Qt Design Studio中我们可以在Connections视图下『Properties』一栏指定组件的动态属性:

33ee15bc-34f2-11ed-ba43-dac502259ad0.png

(1)选择+(Add)按钮,为当前选择的组件添加动态属性。『Item』列显示组件ID。

(2)双击『Property』列中的值,为属性定义一个名称。属性名称必须以小写字母开头,且只能包含字母、数字和下划线。JavaScript保留字不是有效的属性名。

(3)双击『Property Type 』列中的值指定属性类型。

(4)双击『Property Value』列中的值指定属性值。

我们可以右键单击一个属性,并在上下文菜单中选择『Open Binding Editor』,将该属性的值绑定到另一个属性的值,或者绑定到在应用程序中可以访问的数据:

34002298-34f2-11ed-ba43-dac502259ad0.png

注:我们在Navigator2D视图中选中组件时,为组件添加的属性将显示在『Properties』视图中。

二、使用States视图设计状态

在QML中,所有Item都有一个默认状态,用于定义对象和属性值的默认配置。我们可以通过向states属性添加State项来定义新的状态,用于Item在不同的配置之间切换。

例如,如果要更改一个按钮的外观,我们则可以在按钮组件中定义状态,用于隐藏按钮图片,然后在该位置显示另一种图片,或者更改按钮背景、文本颜色。当在其他组件中使用此按钮实例时,可以通过隐藏或显示按钮组件实例来定义状态以实现不同的显示效果。

在Qt Design Studio中,我们在『States』视图中编辑QML文档中的状态:

34168c90-34f2-11ed-ba43-dac502259ad0.png

点击+号,添加一个新的状态。单击新状态可以在2D视图下切换到对应的Item下,然后在『properties』中修改组件或组件实例的属性值。

当添加新的状态后,可以点击下图所示的位置可以设置状态:

3429ed80-34f2-11ed-ba43-dac502259ad0.png

在弹出的上下文菜单中,有几个选项:

(1)如果需要将某一个状态设置为应用程序的启动状态,就选择『Set as Default』,当该状态被设置成默认状态后,该状态的右上角会出现“Default”文本标识;如果需要重置状态,就选择『reset Default』。

(2)如果需要指定什么时候应用状态,就选择『Set when Condition』选项,在Binding Editor中,为状态指定一个when属性,把该属性的值设置为一个布尔表达式(当该表达式的计算结果为true时,则会应用该状态):

34393164-34f2-11ed-ba43-dac502259ad0.png


在『Binding Editor』中组合表达式时,代码补全特性会列出可以在表达式中使用的组件及其属性。

总结

本文描述了如何在Qt Design Studio中创建连接和状态。在Qt Design Studio中使用视图设置的参数,都会在『Code』视图中添加对应的QML代码;反之,如果一个QML文件中已经存在相关的QML代码了,则会在Qt Design Studio中2D/3D视图下显示。

如果QML文档中存在错误或者存在Qt Design Studio不能识别的代码块时,Qt Design Studio将不能在对应的视图中正确显示。所以在QML中,存在一种UI文件(文件后缀为:.ui.qml),该文件只用于在Qt Design Studio中编辑。

本文所述基于Qt Design Studio工具的内容同样适用于Qt Creator 设计模式下的操作。

使用 Qt Design Studio工具能为我们的开发省去一些代码编写工作。在实际开发中,就根据自己的喜爱选择了。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Studio
    +关注

    关注

    2

    文章

    230

    浏览量

    30853
  • design
    +关注

    关注

    0

    文章

    165

    浏览量

    48308
  • Qt
    Qt
    +关注

    关注

    2

    文章

    322

    浏览量

    41221

原文标题:使用Qt Design Studio设计UI动态行为

文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    何在 Vivado完成平台准备工作——创建硬件设计

    装加速平台 ;第 4 部分: 在 Vitis 测试定制加速平台 )。 在本文中,我们将讲解如何在 Vivado Design Suite 完成平台准备工作,以便将其用作为 Viti
    的头像 发表于 09-26 11:29 4606次阅读
    如<b class='flag-5'>何在</b> Vivado<b class='flag-5'>中</b>完成平台准备工作——<b class='flag-5'>创建</b>硬件设计

    何在 S32DS 3.6 安装 IAR Eclipse 插件并创建 IAR 项目?

    何在 S32DS 3.6 安装 IAR Eclipse 插件并创建 IAR 项目? There is an article here that explains how to operate
    发表于 04-23 07:44

    何在S32 Design Studio查看寄存器变化与否?

    何在 S32 Design Studio 查看寄存器变化与否?
    发表于 03-24 06:47

    何在S32 Design Studio中使用远程系统资源管理器插件?

    我正在尝试从 Windows 10 机器远程使用 S32 Design Studio 到 Ubuntu 机器。尝试通过 S32 Design Studio 建立任何类型的远程
    发表于 04-27 08:27

    何在S32 Design Studio添加MCAL / Drivers / OS / Middleware组件?

    帮忙。如何在 S32 Design Studio - 3.4/3.5 - 添加 MCAL / Drivers / OS / Middleware 组件 - 我认为这两个版本的过程是相
    发表于 05-06 06:38

    何在Nuclei Studio IDE编译lib库文件?

    请教下: 1, 如何在Nuclei Studio IDE,编译lib库文件,类似于stm32 keil中生成的lib。如下图: 2, 如何在Nuclei
    发表于 08-11 10:59

    何在Android Studio添加C/C ++代码

    此Screencast将逐步向您展示如何在Android Studio 0.5.1向您的Android应用程序添加C / C ++代码,在Gradle构建期间编译它,并正确处理APK生成。
    的头像 发表于 11-06 06:20 4507次阅读

    何在IP Integrator创建MicroBlaze设计

    了解如何在IP Integrator创建简单的MicroBlaze设计,并创建一个在KC705目标板上运行的简单软件应用程序。
    的头像 发表于 11-20 06:13 3972次阅读
    如<b class='flag-5'>何在</b>IP Integrator<b class='flag-5'>中</b><b class='flag-5'>创建</b>MicroBlaze设计

    何在PADS创建差分对

    使用 PADS 集成的项目,快速、简便、自动创建差分对。观看 PADS 如何在不到 30 秒的时间内创建 50 个差分对!
    的头像 发表于 05-21 06:10 6991次阅读

    Qt Creator连接MCU

    Qt Creator连接MCU连接MCU要求搭建开发环境MCU插件指定MCU设置添加MCU设备添加MCU套件在MCU上运行应用程序连接MCUQt for MCU使您能够使用QML和
    发表于 11-01 16:25 14次下载
    <b class='flag-5'>Qt</b> Creator<b class='flag-5'>连接</b>MCU

    如何将Qt Design Studio工程转换为Qt Creator工程

    在实际QML使用,可能会存在多人协同开发或者C++与QML混合开发的使用场景,这时候可能会使用不同的软件,多数情况下是Qt Creator和Qt Design
    的头像 发表于 09-19 09:09 6609次阅读

    Qt Design Studio工具下创建设计工程

    在QML开发,许多小伙伴喜欢Qt Creator这款工具,集C++ Widget 和 Qt Quick设计于一体。
    的头像 发表于 09-20 09:10 4714次阅读

    Visual Studio Code - 如何在Visual Studio Code(VS Code)构建和调试RL78项目

    本视频演示如何在Visual Studio Code(VS Code)构建和调试LLVM for Renesas RL78项目。 000 介绍051 构建024 调试 原文标题:Visual
    的头像 发表于 08-14 12:05 1931次阅读

    studio创建lib文件及使用

    studio创建lib文件及使用
    的头像 发表于 01-18 08:06 2062次阅读
    e² <b class='flag-5'>studio</b><b class='flag-5'>创建</b>lib文件及使用

    何在DevEco Studio利用CodeGPT接入DeepSeek

    近期DeepSeek火爆全球,那一样很火的开发鸿蒙原生应用的DevEco Studio如果把它接入,会发生什么“化学反应”呢?下面我们将详细分享如何在DevEco Studio利用C
    的头像 发表于 02-19 13:52 2342次阅读
    如<b class='flag-5'>何在</b>DevEco <b class='flag-5'>Studio</b><b class='flag-5'>中</b>利用CodeGPT接入DeepSeek