Qt 控件发展历程 + 目标(1)

文章目录

  • 声明
  • 简述控件的发展历程
  • 学习目标
  • QWidget属性

简介:这篇文章只是一个引子,介绍一点与控件相关的但不重要的内容(浏览浏览即可),这一章节最为重要的还是要把之后常用且重要的控件属性和作用给学透,学清楚,学明白

声明

  1. 图形化界面的程序

    • 在实现图形化界面的程序时,Qt 框架已经为我们提供了许多 “控件”。我们需要学习和了解这些控件,并学会如何使用它们。编程讲究的是 “站在巨人的肩膀上”,而不是 “从头发明轮子”。
  2. 控件的使用

    • 一个图形化界面上的内容,不需要我们全都从零实现。Qt 中已经提供了很多内置的控件,比如按钮、文本框、单选按钮、复选按钮、下拉框等。我们可以直接拿过来使用。
  3. 控件(Widget)

    • 定义 :控件(Widget)是界面上的各种元素和各种部分的统称。
    • 别名 :也被称为小组件或小部件,但 “控件” 这个词听起来更专业。
  4. Java 相关知识

    • 隔壁 Java 的圈子里特别讲究一些概念。例如,在 JavaSE 中会学到 “包装类”,以及 “自动装箱” 和 “自动拆箱”。
    • 自动装箱与拆箱 :这是将 int、double 等内置类型使用 class 进行封装的一种机制。
    • 包装类:隐式类型转换。

通过利用 Qt 提供的控件,我们可以高效地构建图形化界面,无需重复造轮子,提高开发效率。

简述控件的发展历程

  • 上古时期的GUI

    • 在那个年代开发GUI并没有啥控件概念,那界面上显示出来的东西基本上全部都是画出来的。你可以将显示器理解成一块画布,那显示器显示的内容就可以对应理解成:操作系统可以提供一些API接口让你在这个画布上随便写写画画(比如画点,画线,画圆,再填充上各自颜色等等)。

    • 在这个环境下,开发一个图形化界面的程序就相当于设计一个界面,在这个界面上去画矩形,插入文字等等。这种风格的开发已经非常古老了,基本上现在看不到了。
      在这里插入图片描述

    • 比如当时的电子词典所设计图形化界面程序就是采用这种风格,当时是在这个LAVA平台上开发的

      在这里插入图片描述

  • 过渡时期的GUI

    • 后来控件这样的概念就逐渐被引入,那早期的控件比较简单,数量非常有限,那风格自然也比较简朴。比如当时的HTML已经包含了许多标签,不同的标签就会有不同的效果(< img >图片,< a >链接,< input > 输入框等等)
      在这里插入图片描述
  • 现代的GUI

    • 那随着时代的发展,新的GUI开发体系也随之越来越丰富,提供的控件数量/质量也随之提升
      在这里插入图片描述
    • 这里还是要说明的一点是:虽然Qt的控件也很多,但是从整体上来看,相比于更现代的控件体系,其颜值还是要稍逊一筹的,看起来还是很简朴的。不过Qt它没有从历史洪流中褪去,正是因为Qt也在不断的进化与更新,时刻赶追时代潮流。虽然Qt Designer中展示的控件都是默认的样子,不过Qt也提供了一些优化手段,可以让控件变得更加好看
    • 比如近几年Qt提供了Qt Design Studio,它就是对标现代化的界面体系了。制造出来界面的美观程度在业界也是独一档的存在,不过是要收费的,它好像也是存在社区版本的,可以去了解一下。其实开发图形化界面程序,颜值绝对称的上是一件非常重要的事情(具体还是要看应用场景)

学习目标

  1. 在 Qt 中使⽤ QWidget 类表⽰ “控件”,像按钮,视图,输⼊框,滚动条等具体的控件类,都是继承⾃QWidget。可以说,QWidget 中就包含了 Qt 整个控件体系中通⽤的部分。在 Qt Designer 中, 随便拖⼀个控件过来,选中该控件即可在右下⽅看到 QWidget 中的属性
  2. 在Qt Creator的右则可以看到QWidget的各自属性,也可以在这里直接进行编辑,下面红色框框的属性的具体意思都可以通过Qt 的文档来逐个进行了解,不过这些属性不需要咱们每一个都了解得清清楚楚,只需要认识其中一些非常常用的,重要的属性即可

在这里插入图片描述

QWidget属性

下面列出了QWidget的属性和对应的作用,咱们接下来就是要去学习其中一些比较重要常用的属性,并结合相应的代码进行分析和阐述,下面的先了解一下即可

  1. enabled :设置控件是否可使用。true 表示可用,false 表示禁用。

  2. geometry :位置和尺寸。包含 x, y, width, height 四个部分。其中坐标是以父元素为参考进行设置的。

  3. windowTitle :设置 widget 标题。

  4. windowIcon :设置 widget 图标。

  5. windowOpacity :设置 widget 透明度。

  6. cursor :鼠标悬停时显示的图标形状。可以是普通箭头、沙漏、十字等形状。在 Qt Designer 界面中可以清楚看到可选项。

  7. font :字体相关属性。涉及到字体家族、字体大小、粗体、斜体、下划线等等样式。

  8. toolTip :鼠标悬停在 widget 上会在状态栏中显示的提示信息。

  9. toolTipDuring :toolTip 显示的持续时间。

  10. statusTip :Widget 状态发生改变时显示的提示信息(比如按钮被按下等)。

  11. whatsThis :鼠标悬停并按下 alt + F1 时,显示的帮助信息(显示在一个弹出的窗口中)。

  12. styleSheet :允许使用 CSS 来设置 widget 中的样式。Qt 中支持的样式非常丰富,对于前端开发人员上手是非常友好的。

  13. focusPolicy :该 widget 如何获取到焦点。
    * Qt::NoFocus :控件不参与焦点管理,即无法通过键盘或鼠标获取焦点。
    * Qt::TabFocus :控件可以通过 Tab 键获得焦点。
    * Qt::ClickFocus :控件可以通过鼠标点击获得焦点。
    * Qt::StrongFocus :控件可以通过键盘和鼠标获得焦点。
    * Qt::WheelFocus :控件可以通过鼠标滚轮获得焦点(在某些平台或样式中可能不可用)。

  14. contextMenuPolicy :上下文菜单的显示策略。
    * Qt::DefaultContextMenu :默认的上下文菜单策略,用户可以通过鼠标右键或键盘快捷键触发上下文菜单。
    * Qt::NoContextMenu :禁用上下文菜单,即使用户点击鼠标右键也不会显示菜单。
    * Qt::PreventContextMenu :防止控件显示上下文菜单,即使用户点击鼠标右键也不会显示菜单。
    * Qt::ActionsContextMenu :将上下文菜单替换为控件的 “动作” 菜单,用户可以通过鼠标右键或键盘快捷键触发这个菜单。
    * Qt::CustomContextMenu :使用自定义的上下文菜单,用户可以通过鼠标右键或键盘快捷键触发这个菜单。

  15. locale :设置语言和国家地区。

  16. acceptDrops :该部件是否接受拖放操作。如果设置为 true,那么该部件就可以接收来自其他部件的拖放操作。当一个部件被拖放到该部件上时,该部件会接收到相应的拖放事件(如 dropEvent)。如果设置为 false,那么该部件将不会接收任何拖放操作。

  17. minimumSize :控件的最小尺寸。包含最小宽度和最小高度。

  18. maximumSize :控件的最大尺寸。包含最大宽度和最大高度。

  19. sizePolicy :尺寸策略。设置控件在布局管理器中的缩放方式。

  20. windowModality :指定窗口是否具有 “模态” 行为。

  21. sizeIncrement :拖动窗口大小时的增量单位。

  22. baseSize :窗口的基础大小。用来搭配 sizeIncrement 调整组件尺寸,以计算组件应该调整到的合适的值。

  23. palette :调色板。可以设置 widget 的颜色风格。

  24. mouseTracking :是否要跟踪鼠标移动事件。如果设为 true,表示需要跟踪,则鼠标划过的时候该 widget 就能持续收到鼠标移动事件。如果设为 false,表示不需要跟踪,则鼠标划过的时候 widget 不会收到鼠标移动事件,只能收到鼠标按下或者释放的事件。

  25. tabletTracking :是否跟踪触摸屏的移动事件。类似于 mouseTracking,是 Qt 5.9 中引入的新属性。

  26. layoutDirection :布局方向。
    * Qt::LeftToRight :文本从左到右排列,也是默认值。
    * Qt::RightToLeft :文本从右到左排列。
    * Qt::GlobalAtomics :部件的布局方向由全局原子性决定。

  27. autoFillBackground :是否自动填充背景色。

  28. windowFilePath :能够把 widget 和一个本地文件路径关联起来。PS:其实作用不大。

  29. accessibleName :设置 widget 的可访问名称。这个名称可以被辅助技术(像屏幕阅读器)获取到。这个属性用于实现无障碍程序的场景中(也就是给盲人写的程序)。PS:其实盲人也是可以使用电脑和手机的,甚至盲人还能成为程序猿。参见链接

  30. accessibleDescription :设置 widget 的详细描述。作用同 accessibleName。

  31. inputMethodHints :针对输入框有效,用来提示用户当前能输入的合法数据的格式。比如只能输入数字,只能输入日期等。

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

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

相关文章

socc 19 echash论文部分解读

前言&#xff1a;论文还是得吃透才行&#xff0c;不然很多细节有问题 q1 object和data chunck哪一个大 根据论文&#xff0c;一个 data chunk 通常比一个 object 大&#xff0c;因为它是由多个 object 组合而成的 。 论文中提到&#xff0c;cross-coding 会将多个 object 组合…

w~自动驾驶~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12371169 #世界模型和DriveGPT这类大模型到底能给自动驾驶带来什么ne 以下分享大模型与自动驾驶结合的相关工作9篇论 1、ADAPT ADAPT: Action-aware Driving Caption Transformer&#xff08;ICRA2023&#xff09; A…

【paddle】常见的数学运算

根据提供的 PaddlePaddle 函数列表&#xff0c;我们可以将它们按照数学运算、逻辑运算、三角函数、特殊函数、统计函数、张量操作和其他操作等类型进行分类。以下是根据函数功能进行的分类&#xff1a; 取整运算 Rounding functions 代码描述round(x)距离 x 最近的整数floor(…

绘制音频信号的各种频谱图,包括Mel频谱图、STFT频谱图等。它不仅能够绘制频谱图librosa.display.specshow

librosa.display.specshow 是一个非常方便的函数&#xff0c;用于绘制音频信号的各种频谱图&#xff0c;包括Mel频谱图、STFT频谱图等。它不仅能够绘制频谱图&#xff0c;还能自动设置轴标签和刻度&#xff0c;使得生成的图像更加直观和易于理解。 ### 函数签名 python libros…

DDR DFI 5.2 协议接口学习梳理笔记01

备注:本文新增对各种时钟含义做了明确定义区分,避免大家产生误解,这也是5.2版本新引入的。 1. 前言 截止2025年5月,DFI协议最新版本为 5.2,我们首先看一下过去几代的演进: DFI全称DDR PHY Interface,是一种接口协议,定义了 Controller 和 PHY 之间接口的信号、时序以…

windows篡改脚本提醒

✅ 功能简介 该监控系统具备如下主要功能&#xff1a; &#x1f4c1; 目录监控 实时监听指定主目录及其所有子目录内文件的变动情况。 &#x1f512; 文件哈希校验 对文件内容生成 SHA256 哈希&#xff0c;确保变更检测基于内容而非时间戳。 &#x1f6ab; 排除机制 支…

文章记单词 | 第102篇(六级)

一&#xff0c;单词释义 apologize /əˈpɒlədʒaɪz/ v. 道歉&#xff1b;认错discharge /dɪsˈtʃɑːrdʒ/ v./n. 排出&#xff1b;释放&#xff1b;解雇&#xff1b; dischargequiver /ˈkwɪvər/ v./n. 颤抖&#xff1b;抖动&#xff1b;箭筒plantation /plnˈteɪʃ…

【DCGMI专题1】---DCGMI 在 Ubuntu 22.04 上的深度安装指南与原理分析(含架构图解)

目录 一、DCGMI 概述与应用场景 二、Ubuntu 22.04 系统准备 2.1 系统要求 2.2 环境清理(可选) 三、DCGMI 安装步骤(详细图解) 3.1 安装流程总览 3.2 分步操作指南 3.2.1 系统更新与依赖安装 3.2.2 添加 NVIDIA 官方仓库 3.2.3 安装数据中心驱动与 DCGM 3.2.4 服务…

主成分分析(PCA)法例题——给定协方差矩阵

已知样本集合的协方差矩阵为 C x 1 10 [ 3 1 1 1 3 − 1 1 − 1 3 ] {\bm C}_x \frac{1}{10} \begin{bmatrix} 3 & 1 & 1 \\ 1 & 3 & -1 \\ 1 & -1 & 3 \end{bmatrix} Cx​101​ ​311​13−1​1−13​ ​ 使用PCA方法将样本向量降到二维 。 求解 计…

uni-app(4):js语法、css语法

1 js语法 uni-app的js API由标准ECMAScript的js API 和 uni 扩展 API 这两部分组成。标准ECMAScript的js仅是最基础的js。浏览器基于它扩展了window、document、navigator等对象。小程序也基于标准js扩展了各种wx.xx、my.xx、swan.xx的API。node也扩展了fs等模块。uni-app基于E…

Idea 配合 devtools 依赖 实现热部署

核心依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency> yaml配置 spring: #…

leetcode513.找树左下角的值:递归深度优先搜索中的最左节点追踪之道

一、题目本质与核心诉求解析 在二叉树算法问题中&#xff0c;"找树左下角的值"是一个典型的结合深度与位置判断的问题。题目要求我们找到二叉树中最深层最左边的节点值&#xff0c;这里的"左下角"有两个关键限定&#xff1a; 深度优先&#xff1a;必须是…

Python入门手册:Python基础语法

Python是一种简洁、易读且功能强大的编程语言&#xff0c;非常适合初学者入门。无论你是编程新手&#xff0c;还是有一定编程基础但想学习Python的开发者&#xff0c;掌握Python的基础语法都是迈向高效编程的第一步。本文将详细介绍Python的基本语法&#xff0c;包括变量和数据…

postgresql 常用参数配置

#01 - Connection-Authentication 优化点&#xff1a; listen_addresses 0.0.0.0 建议&#xff1a;生产环境应限制为具体IP&#xff08;如 192.168.1.0/24,127.0.0.1&#xff09;&#xff0c;避免暴露到公网。 ssl off 建议&#xff1a;启用SSL&#xff08;ssl on&#xf…

POI模板生成EXCEL 64000 style in a .xlsx Workbook

业务场景&#xff1a; 项目需要生成多个EXCEL表格&#xff0c;每个表格根据数据列表的大小动态增加Excel的行数&#xff0c;要保证新插入行的样式与模板完全一致 考虑使用以下方法保证样式的统一 cloneStyleFrom(templateStyle); 但是由于数据量比较大&#xff0c;抛出如下的…

HJ106 字符逆序【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 HJ106 字符逆序 一、题目描述 二、测试用例 三、解题思路 基本思路&#xff1a;   考虑到可能会有多个空格&#xff0c;使用使用 getline 函数直接读取一行。   如果可以直接打印的…

CI/CD的演进之路

CI/CD的演进之路 一、CI/CD的成长演变 早期起源与初步实践&#xff1a;CI/CD的概念可以追溯到软件开发的早期阶段&#xff0c;但真正开始受到关注是在敏捷开发方法兴起之后。在传统的瀑布模型开发模式下&#xff0c;软件开发周期长、发布频率低&#xff0c;更新往往需要数月甚…

制作一款打飞机游戏55:扩散

子弹模式 ‌疯狂的子弹地狱‌&#xff1a; 嘿&#xff0c;伙计们&#xff0c;今天我们要创造一些令人印象深刻的子弹模式。这就是所谓的“子弹地狱”&#xff01; ‌问题与挑战‌&#xff1a; 在之前的开发中&#xff0c;我们遇到了一些问题。特别是关于如何处理子弹的角度问题…

Vortex GPGPU的github流程跑通与功能模块波形探索(三)

文章目录 前言一、./build/ci下的文件结构二、基于驱动进行仿真过程牵扯的文件2.1 blackbox.sh文件2.2 demo文件2.3 额外牵扯到的ramulator2.3.1 ramulator简单介绍2.3.2 ramulator使用方法2.3.3 ramulator的输出2.3.4 ramulator的复现2.3.4.1 调试与验证&#xff08;第 4.1 节…

公有云AWS基础架构与核心服务:从概念到实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 (初学者技术专栏) 一、基础概念 定义:AWS(Amazon Web Services)是亚马逊提供的云计算服务,包含计算、存储、网络、数据库等核心能力,通过全球数据中心为用户提供灵活…