由于QT之后的几个文档并不像之前的,会有明确·解释,大部分信息都需要从详细描述中获得,因此本文对其中部分详细描述进行翻译,后续也会不断更新:

QPushButton:

按钮或命令按钮可能是任何图形用户界面中最常用的小部件。按下(单击)按钮以命令计算机执行某些操作或回答问题。典型的按钮有OK、Apply、Cancel、Close、Yes、No和Help。

命令按钮是矩形的,通常显示描述其操作的文本标签。快捷键可以通过在文本中的首选字符前面加一个符号和来指定。例如:

QPushButton*button=new QPushButton(“&Download”,此为“&Download”);

在本例中,快捷键为Alt+D。有关详细信息,请参阅QShortcut文档(要显示实际的“与”,请使用“&&”)。

按钮显示文本标签,还可以选择显示一个小图标。这些可以使用构造函数进行设置,然后使用setText()和setIcon()进行更改。如果按钮被禁用,文本和图标的外观将根据GUI样式进行操作,使按钮看起来“已禁用”。

当鼠标、空格键或键盘快捷键激活按钮时,按钮会发出clicked()。连接此信号以执行按钮的操作。按钮还提供不太常用的信号,例如pressed()和released()。

对话框中的命令按钮默认为自动默认按钮,即当它们接收到键盘输入焦点时,它们会自动成为默认按钮。默认按钮是当用户在对话框中按Enter或Return键时激活的按钮。您可以使用setAutoDefault()进行更改。请注意,自动默认按钮保留了一点额外的空间,这是绘制默认按钮指示器所必需的。如果您不想在按钮周围留有这个空间,请调用setAutoDefault(false)。

在过去的十年里,button widget的核心功能已经发展到可以容纳很多变化。《微软风格指南》现在展示了大约十种不同的Windows按钮状态,文本暗示,如果考虑到所有功能组合,还有几十种。

最重要的模式或状态是:

是否可用(灰显、禁用)。

标准按钮、切换按钮或菜单按钮。

打开或关闭(仅用于切换按钮)。

默认或正常。对话框中的默认按钮通常可以使用Enter或Return键“单击”。

是否自动重复。

不管压不压。

作为一般规则,当应用程序或对话框窗口在用户单击时执行操作(如应用、取消、关闭和帮助)时,以及当小部件应具有宽矩形形状并带有文本标签时,请使用按钮。改变窗口状态而不是执行操作的小的、通常是方形的按钮(例如QFileDialog右上角的按钮)不是命令按钮,而是工具按钮。Qt为这些按钮提供了一个特殊类(QToolButton)。

如果您需要切换行为(请参见setCheckable())或一个按钮,该按钮在按下时会像滚动条中的箭头一样自动重复激活信号(请参见setAutoRepeat()),那么命令按钮可能不是您想要的。如有疑问,请使用工具按钮。

注意:在macOS上,当按钮的宽度小于50或高度小于30时,按钮的角会从圆形变为方形。使用setMinimumSize()函数来防止这种行为。

命令按钮的变体是菜单按钮。它们不仅提供一个命令,还提供多个命令,因为单击它们时会弹出一个选项菜单。使用方法setMenu()将弹出菜单与按钮相关联。

其他类别的按钮包括选项按钮(请参见QRadioButton)和复选框(请参见QCheckBox)。

在Qt中,QAbstractButton基类提供大多数模式和其他API,QPushButton提供GUI逻辑。有关API的更多信息,请参见QabStretchButton。

另请参见QToolButton、QRadioButton、QCheckBox和GUI设计手册:按钮。

Qwidget

1. QWidget有许多成员函数,但其中一些几乎没有直接功能;例如,QWidget有一个字体属性,但它本身从来不使用。有许多子类提供真正的功能,比如QLabel、QPushButton、QListWidget和QTabWidget。

2. 没有父窗口小部件的窗口小部件总是一个独立的窗口(顶级窗口小部件)。对于这些小部件,setWindowTitle()和setWindowIcon()分别设置标题栏和图标。

3.Qt中的大多数小部件主要用作子小部件。例如,可以将按钮显示为顶级窗口,但大多数人更喜欢将按钮放在其他小部件中,例如QDialog。

4.由于QWidget是QPaintDevice的一个子类,因此子类可用于显示自定义内容,这些内容是使用QPainter类实例的一系列绘制操作合成的。这种方法与Graphics View框架使用的画布风格的方法形成对比,在Graphics View框架中,项目由应用程序添加到场景中,并由框架本身渲染。

5.每个小部件都在其paintEvent()函数中执行所有绘制操作。每当小部件需要重新绘制时,无论是由于某些外部更改还是应用程序请求,都会调用该函数。

模拟时钟示例显示了一个简单的小部件如何处理绘制事件。

在实现一个新的小部件时,重新实现sizeHint()以为小部件提供合理的默认大小,并使用setSizePolicy()设置正确的大小策略几乎总是有用的。

默认情况下,不提供大小提示的复合小部件的大小将根据其子小部件的空间要求来确定。

6.小部件响应通常由用户操作引起的事件。Qt通过调用特定的事件处理函数,将事件传递给小部件,QEvent子类的实例包含每个事件的信息。

如果小部件只包含子小部件,则可能不需要实现任何事件处理程序。如果您想在子部件中检测鼠标点击,请在该部件的mousePressEvent()中调用子部件的underMouse()函数。

6.每当小部件需要重新绘制时,都会调用paintEvent()。每个显示自定义内容的小部件都必须实现它。使用QPaint只能在paintEvent()或paintEvent()调用的函数中进行绘制。调整小部件的大小后,将调用resizeEvent()。

当鼠标光标位于小部件内部时按下鼠标按钮,或者小部件使用grabMouse()抓取鼠标时,会调用mousePressEvent()。在不释放鼠标的情况下按下鼠标实际上与调用grabMouse()相同。

7.释放鼠标按钮时调用mouseReleaseEvent()。小部件在收到相应的鼠标按下事件时接收鼠标释放事件。这意味着,如果用户在小部件内按下鼠标,然后在释放鼠标按钮之前将鼠标拖动到其他地方,小部件将收到释放事件。有一个例外:如果按下鼠标按钮时出现弹出菜单,此弹出菜单会立即窃取鼠标事件。

当用户双击小部件时,会调用mouseDoubleClickEvent()。如果用户双击,小部件将收到一个鼠标按下事件、一个鼠标释放事件、一个鼠标点击事件、一个第二次鼠标按下事件、这个事件以及最后一个第二次鼠标释放事件。(如果在此操作期间鼠标未保持稳定,也可能会收到一些鼠标移动事件。)在第二次单击之前,无法区分单击和双击。(这就是为什么大多数GUI书籍建议双击是单次单击的扩展,而不是触发不同操作的原因之一。)

每当按下一个键时,都会调用keyPressEvent(),当一个键被按住足够长的时间使其自动重复时,也会调用keyPressEvent()。Tab和Shift+Tab键只有在焦点更改机制不使用时才会传递给小部件。要强制小部件处理这些密钥,必须重新实现QWidget::event()。

当小部件获得键盘焦点时(假设您调用了setFocusPolicy()),就会调用focusInEvent()。表现良好的小部件表明它们以清晰但谨慎的方式拥有键盘焦点。

当小部件失去键盘焦点时,会调用focusOutEvent()。

您可能还需要重新实现一些不太常见的事件处理程序:

当按下鼠标按钮时,只要鼠标移动,就会调用mousemoveent()。这在拖放操作期间非常有用。如果调用setMouseTracking(true),即使没有按下任何按钮,也会出现鼠标移动事件。(另请参见《拖放指南》)

每当释放一个键并按住它时(如果该键是自动重复的),就会调用keyReleaseEvent()。在这种情况下,小部件每次重复都会收到一对按键释放和按键事件。Tab和Shift+Tab键只有在焦点更改机制不使用时才会传递给小部件。要强制小部件处理这些密钥,必须重新实现QWidget::event()。

每当用户在小部件有焦点时转动鼠标滚轮时,就会调用wheelEvent()。

当鼠标进入小部件的屏幕空间时,会调用enterEvent()。(这不包括小部件的任何子部件拥有的屏幕空间。)

当鼠标离开小部件的屏幕空间时,将调用leaveEvent()。如果鼠标进入子窗口小部件,则不会导致leaveEvent()。

当小部件相对于其父部件移动时,调用moveEvent()。

当用户关闭小部件时(或当调用close()时),将调用closeEvent()。

QEvent::Type的文档中还描述了一些相当模糊的事件。要处理这些事件,需要直接重新实现event()。

event()的默认实现处理Tab和Shift+Tab(以移动键盘焦点),并将大多数其他事件传递给上面更专门的处理程序之一。

事件系统中介绍了事件及其传递机制

QT(5.14.2) 部分文档中文译文相关推荐

  1. ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part2

    ns(来源于"network simulator")是一系列离散事件网络模拟器,包括ns-1.ns-2和ns-3.他们主要应用于研究和教学.ns-3是自由软件,以GNU GPLv2 ...

  2. Apache Hadoop 2.9.2文档中文译文 -------未完!!!!!!

    目录 一. General(概括) 1. Overview 2. Single Node Setup 3. Cluster Setup 4. Commands Reference 5. FileSys ...

  3. kkFileView集成LibreOffice,解决部分文档预览500

    背景 Apache OpenOffice 已经不再支持更新, 最新版本4.1+ kkfileview 官方docker镜像集成的office就是OpenOffice 但对于支持文档预览,特别是doc, ...

  4. Anki Cozmo(Vector)人工智能机器人玩具部分文档

    Cozmo人工智能机器人SDK使用笔记(X)-总结- |人工智能基础(中小学版)实践平台| https://blog.csdn.net/ZhangRelay/article/details/86675 ...

  5. ES _source字段介绍——json文档,去掉的话无法更新部分文档,最重要的是无法reindex...

    摘自:https://es.xiaoleilu.com/070_Index_Mgmt/31_Metadata_source.html The _source field stores the JSON ...

  6. 基于itextpdf java pdf添加水印后,部分文档无法显示水印的问题

    maven项目开发遇到的问题. 这个问题有点坑,测试时doc(x).xls(x)添加水印后正常显示,而ppt(x)打开后水印看不到,但是可以被选中.不了解pdf文档,搜了半天,最后发现pdf文档是分层 ...

  7. ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part1

    ​ns(来源于"network simulator")是一系列离散事件网络模拟器,包括ns-1.ns-2和ns-3.他们主要应用于研究和教学.ns-3是自由软件,以GNU GPLv ...

  8. ElasticSearch Java High level Rest Client 官方文档中文翻译(一)

    ElasticSearch Java High level Rest Client 官方文档中文翻译 一 纯粹记录自己在看官网的es rest high level api 时的翻译笔记,可以对照着官 ...

  9. QWT6.14的编译、配置、使用(Qt Creator5.14.2)

    文章目录 前言 一.下载安装 1. 下载 2.编译 二.配置与使用 1.配置 使用 2.编译遇到问题 参考文章: 前言 QWT, Qt Widgets for Technical Applicatio ...

最新文章

  1. WPC大会新动态:合作伙伴采纳Windows Azure
  2. UEFI、BIOS、Secure Boot的关系和知识介绍
  3. Java 原生日志 java.util.logging
  4. Spring Boot 传参方式
  5. SAP UI5 sap.ui.vk 命名空间内的控件介绍
  6. CornerNet: Detecting Objects as Paired Keypoints
  7. Gym 101915J(并查集)
  8. 最快的Java序列化框架Protostuff简介
  9. mysql 好用 客户端_5款好用的mysql客户端
  10. 空间点到直线的距离c语言,空间两直线间距离公式(文档篇).doc
  11. SEO人员,如何搭建你的网站基础框架?
  12. 音频编码分析:AAC、MP3、Opus
  13. 计算机游戏中屏幕上显示的,计算机显示器选择弧形屏幕还是直接屏幕?主游戏...
  14. vue实现图书管理案例
  15. faiss通用向量搜索服务玩转腾讯880万词向量
  16. NOI.5.22津津的储蓄计划
  17. 计算机与通信英语,数据与计算机通信(第十版)(英文版)
  18. ESP32-S2上使用SPI接口芯片DM9051NP转以太网的无线物联网网关开发指导
  19. 风丘科技为您提供10M以太网解决方案
  20. LeetCode 2437. 有效时间的数目

热门文章

  1. C++单例模式与工厂模式
  2. html css img标签鼠标事件,HTML+CSS入门 img标签学习
  3. 打开网页时出现504错误是什么
  4. mysql 分组排序 取前top n
  5. 微信收藏夹文件保存在服务器安全吗,开启这个功能,微信文件再也不怕过期
  6. uniapp —— 小程序实现带参分享微信、朋友圈以及调试获取参数
  7. 元移动平台助力广东农信试水互联网+业务创新
  8. Excel中缺失数据值的自动填充
  9. 突然耳鸣是突发性耳聋吗?
  10. vivo OPPO iQOO 一加 真我 手撕 安卓10 11 12手撕方案