新手如何使用Qt——方法使用

news2024/9/29 4:28:55

前言

        那么这篇文章其实是我在使用Qt的过程当中呢,我发现在Qt使用过程中,在我理解信号和槽这个概念后,在编写槽函数数的时候,发现了自身存在的问题,我的难点是在于当我在编写槽函数的时候,我知道这个槽函数是用来干什么的,但是不知道用什么类,什么函数,因为在qt中的类有很多,每个类下面又有很多函数,导致我不知道该用什么类下面的函数。那么这个问题是通过阅读技术文档来帮助我快速找到这个类和函数,下面我将介绍一下方法。

一、需要知道部件的概念

        在Qt编程当中,有很多个类,每个类前面都用到了Q作为标志,例如QPushButton这是一个按钮部件,同时也是一个类,按钮用到很多地方,当然,这个类当中有很成员函数,那么像这样的有很多,比如标签(QLabel),文本编辑器(QTextEdit),行编辑器(QLineEdit),对话框(QDialog),复选框(QChackBox)...等等,总之有很多,大家可以通过这个链接去看看All C++ Classes | Qt 6.7

         那么在诸如这么多类当中怎么才能找到我需要的哪个呢,那么我们看下面这张图

我们点击帮助,选择索引

 

        然后输入QFileDialog,

        我们看看这个查找的类有什么特点,首先看file是文件的意思,Dialog是对话框,那么这个类其实就是一个文件对话框,那么在Qt的类当中,我们就根据这样的特点来找到需要什么部件就找相应的部件就可以了,像这种文本编辑器(QTextEdit),行编辑器(QLineEdit)也是同样的text是文本的意思,edit是编辑,组合一起不就是文本编辑器吗,一般对于新手而言,掌握基础的部件其实就可以了,要是按照这种方法记不住,应该就是英语基础太差,那么就只能死记硬背了。

        那么下面我们怎么知道我们需要用到什么函数呢,那么这个问题对于刚开始接触Qt还有英语不好的同学来说,可能是一个无比巨大的问题,我能写照着别人的代码敲一次,但是过后又忘记了该用什么函数?这个问题其实我也有过同样的经历,这么多类,类下面又有这么多函数,肯定是记不住,背不完的,况且这么多类也不是一个人完成的,是一个世界级别的公司团队合作完成的,对于新手来说,我知道这个功能应该做什么,但是该用哪个函数来实现呢,其实最简单的方法就是查手册,用到哪个类就去查手册,不认识就去翻译。

二、基于任务划分使用常见的类

        1. 界面控件操作

以下是常见的 Qt Widgets 类的详细列表,按照控件类型分类:

1. 基本控件(Buttons and Indicators)

  • QPushButton:标准的按钮,用于响应用户点击事件。
  • QRadioButton:单选按钮,允许用户从多个选项中选择一个。
  • QCheckBox:复选框,允许用户选择或取消选择。
  • QToolButton:工具按钮,类似于 QPushButton,但通常用于工具栏。
  • QCommandLinkButton:用于呈现命令的链接按钮,类似网页的超链接。
  • QButtonGroup:按钮组,管理一组按钮的相互排斥关系(如单选按钮组)。

2. 输入控件(Input Widgets)

  • QLineEdit:单行文本输入框。
  • QTextEdit:多行文本编辑器,支持富文本和纯文本。
  • QPlainTextEdit:多行纯文本编辑器,不支持富文本,但性能较 QTextEdit 更好。
  • QComboBox:组合框,包含一个下拉菜单,允许用户从列表中选择一个选项。
  • QSpinBox:用于显示和编辑整数的旋转框。
  • QDoubleSpinBox:用于显示和编辑浮点数的旋转框。
  • QSlider:滑块,用于选择数值范围内的某个值。
  • QDial:旋钮,类似于滑块,但以圆形形式呈现。
  • QDateEdit:日期选择编辑框,允许用户选择和编辑日期。
  • QTimeEdit:时间选择编辑框,允许用户选择和编辑时间。
  • QDateTimeEdit:日期和时间编辑框,结合日期和时间输入。
  • QKeySequenceEdit:用于输入键盘快捷键的编辑框。

3. 显示控件(Display Widgets)

  • QLabel:显示文本或图片的标签。
  • QLCDNumber:用于显示数字的 LCD 风格显示器。
  • QProgressBar:进度条,显示任务的进度。
  • QStatusBar:状态栏,通常在主窗口底部用于显示状态信息。
  • QFrame:框架,用于给界面添加视觉元素,比如边框和线条。

4. 容器控件(Container Widgets)

  • QGroupBox:分组框,用于将多个控件分组。
  • QTabWidget:选项卡控件,允许在多个选项卡之间切换内容。
  • QStackedWidget:堆叠窗口部件,允许在多个窗口小部件之间切换(只显示一个)。
  • QToolBox:工具箱控件,类似于选项卡,但垂直排列,每次显示一个工具面板。
  • QScrollArea:滚动区域,允许包含超出可视范围的内容,并提供滚动条。
  • QSplitter:分割器,允许用户通过拖动调整布局中控件的大小。

5. 列表和视图控件(Item Views and Models)

  • QListWidget:用于显示列表项的控件,基于 QListView 的便捷类。
  • QTreeWidget:用于显示树状结构的控件,基于 QTreeView 的便捷类。
  • QTableWidget:用于显示二维表格数据的控件,基于 QTableView 的便捷类。
  • QListView:列表视图,显示基于模型的数据。
  • QTreeView:树视图,显示基于模型的分层数据。
  • QTableView:表格视图,显示基于模型的二维数据。
  • QColumnView:多列视图,显示分级数据,类似于文件管理器中的多列模式。
  • QHeaderView:表格或树视图中的表头。

6. 菜单和工具栏(Menus and Toolbars)

  • QMenuBar:菜单栏,通常用于主窗口,显示菜单项。
  • QMenu:菜单,通常用于菜单栏或上下文菜单中,包含多个动作项。
  • QToolBar:工具栏,通常放置在窗口顶部,用于放置常用的操作按钮。
  • QAction:动作,用于在菜单或工具栏中执行命令。

7. 对话框控件(Dialogs)

  • QDialog:基本对话框类,所有对话框都从此类派生。
  • QMessageBox:消息框,用于显示信息或警告用户。
  • QFileDialog:文件对话框,用于打开或保存文件。
  • QColorDialog:颜色选择对话框,允许用户选择颜色。
  • QFontDialog:字体选择对话框,允许用户选择字体。
  • QInputDialog:输入对话框,允许用户输入简单的数据(如字符串或整数)。

8. 布局管理器(Layout Managers)

虽然布局管理器不是控件,但它们用于控制界面上控件的排列和大小调整。

  • QHBoxLayout:水平布局,控件从左到右排列。
  • QVBoxLayout:垂直布局,控件从上到下排列。
  • QGridLayout:网格布局,控件按行和列排列。
  • QFormLayout:表单布局,通常用于排列标签和输入控件对。

9. 特殊控件

  • QCalendarWidget:日历控件,显示月份、日期等,允许用户选择日期。
  • QDockWidget:可停靠的窗口部件,通常用于创建可浮动的工具窗口。
  • QTextBrowser:超文本浏览器,支持显示 HTML 和富文本。

        2. 窗口操作

2. 窗口操作(Window Management Classes)

  • QMainWindow:主窗口类。
  • QDialog:对话框类。
  • QMessageBox:消息框类。
  • QFileDialog:文件选择对话框。
  • QColorDialog:颜色选择对话框。
  • QFontDialog:字体选择对话框。
  • QInputDialog:输入对话框。
  • QWidget:所有窗口部件的基类。
  • QDockWidget:可停靠的窗口部件。
  • QStatusBar:状态栏,显示状态信息。
  • QToolBar:工具栏,包含工具按钮。
  • QMenuBar:菜单栏。
  • QMenu:菜单,通常包含多个动作项。
  • QAction:菜单或工具栏中的操作项。

        3. 文件操作

  • QFile:用于文件的读写操作。
  • QTextStream:用于以文本模式读写文件。
  • QDataStream:用于以二进制模式读写数据。
  • QDir:用于操作目录(如创建、删除、遍历目录等)。
  • QFileInfo:提供有关文件和目录的详细信息。
  • QFileDialog:文件选择对话框。

        4. 定时器

  • QTimer:定时器类,用于创建和管理定时任务。
  • QElapsedTimer:用于测量经过时间的定时器。
  • QBasicTimer:轻量级的定时器,通常用于自定义事件循环的简单任务。

        5. 网络操作

  • QNetworkAccessManager:处理网络请求(如 HTTP GET/POST 请求)。
  • QNetworkRequest:用于描述网络请求(URL、头信息等)。
  • QNetworkReply:表示网络请求的响应。
  • QTcpSocket:用于 TCP 客户端通信。
  • QTcpServer:用于创建 TCP 服务器,接受客户端连接。
  • QUdpSocket:用于 UDP 通信。
  • QNetworkSession:管理网络会话。
  • QHostInfo:提供主机名和 IP 地址的解析功能。
  • QAbstractSocket:TCP 和 UDP 套接字的基类。
  • QWebSocket:用于 WebSocket 通信。
  • QWebSocketServer:用于创建 WebSocket 服务器。
  • QSslSocket:支持 SSL/TLS 的套接字通信类。

 那么这里有人就会有疑问,为什么对话框属于界面控件,又是窗口类

对话框的双重角色

  1. 作为窗口:

    • 在 Qt 中,对话框实际上是一个独立的窗口,它会弹出并在屏幕上显示,就像普通的主窗口(QMainWindow)一样。
    • 对话框通常是模态(modal)的,意味着当它弹出时,用户必须处理完该对话框才能回到主窗口。
    • 类如 QDialogQMessageBoxQFileDialog 等,都属于对话框类,提供窗口级别的用户交互功能(比如提示信息、文件选择等)。
    • 这些对话框都是独立的窗口,与主窗口分开显示,有自己的窗口边框、标题栏、关闭按钮等。
  2. 作为界面控件:

    • 虽然对话框本质上是一个窗口,但它也是一种控件(Widget),继承自 QWidget。这意味着它拥有与其他控件(如按钮、文本框等)相似的属性和行为。
    • 你可以在对话框中放置其他控件(如按钮、标签、文本框),并通过布局管理器来组织这些控件。因此,从用户界面的角度来看,它又是一个用于容纳其他控件的“容器控件”。
    • 比如在 QDialog 中,你可以放置多个 QPushButtonQLineEdit 等控件,并通过布局管理器来管理这些控件的排列方式。

这里其实是类的继承问题,QObject -> QWidget -> QDialog

以下类既可以看作是窗口,也可以看作是界面控件的一部分:

  • QDialog:通用对话框。
  • QMessageBox:用于显示消息提示框的对话框。
  • QFileDialog:用于选择文件的对话框。
  • QColorDialog:颜色选择对话框。
  • QFontDialog:字体选择对话框。
  • QInputDialog:简化的输入对话框

 好的,现在我们已经基本找到了界面控件类,和一些相关操作的类了,当然,这些具体类下面常用的函数可以去查看文档,

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

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

相关文章

GD32片内flash读写数据

如有技术问题及技术需求请加作者微信! GD32片内Flash的读写数据是微控制器编程中的常见任务,主要用于存储程序代码、配置参数或用户数据等。以下将详细介绍GD32片内Flash的读写数据方法和程序。 一、GD32 Flash的基本特性 存储空间划分:GD32的Flash存储空间通常分为主存储块…

W39-02-jmeter中如何实现:下一个请求是需要根据前一个请求返回值进行循环请求

业务压测需求: 查询和上报接口, 1.查询接口返回的数据有好几条需要上报的数据 2.查询接口中返回的每条数据中,有两个字段需要传递到上报接口 3.查询接口中,这两个字段一个为int型,一个为数组[1,2,3,4] 实现方式 …

大模型算法岗常见面试题100道(非常详细)零基础入门到精通,收藏这一篇就够了

大模型应该是目前当之无愧的最有影响力的AI技术,它正在革新各个行业,包括自然语言处理、机器翻译、内容创作和客户服务等等,正在成为未来商业环境的重要组成部分。 截至目前大模型已经超过200个,在大模型纵横的时代,不…

2条件欧几里得聚类

条件欧几里得聚类 本教程介绍如何使用类: 一种分割算法,根据欧几里得距离和需要保持的用户可自定义条件对点进行聚类。pcl::ConditionalEuclideanClustering 此类使用与 Euclidean Cluster Extraction、Region growing segmentation 和 Color-based …

以太网交换安全:端口隔离

一、端口隔离 以太交换网络中为了实现报文之间的二层广播域的隔离,用户通常将不同的端口加人不同的 VLAN大型网络中,业务需求种类繁多,只通过 VLAN实现报文的二层隔离,会浪费有限的VLAN资源。而采用端口隔离功能,则可…

【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL66

超前进位加法器 描述 题目描述: 求两个四位的数据编写一个四位的超前进位加法器,建议使用子模块 提示:超前进位加法器的位公式如下 这里‘’ ‘’符号不是‘加’和‘乘’,是‘或’和 ‘与’ 波形示意图: 输入…

履带机器人运动模型分析

履带机器人运动学模型分析 滑动转向 履带机器人单侧履带可等效视为“无穷多个小轮子”,且这单侧的“无穷多个小轮子”的“转速”是一致的。所以,履带式机器人的转向方式和四轮驱动机器人(SSMR)的是一致的,也是滑动转向。 因此,下…

供应链 | 顶刊POMS论文精读:交易成本经济学(TCE)——供应链效率理论

编者按 供应链效率提升指南:不可不知的TCE理论视角 本文为Production and Operations Management 期刊论文,原文信息: Ketokivi, M., & Mahoney, J. T. (2020). Transaction cost economics as a theory of supply chain efficiency. …

CentOS 替换 yum源 经验分享

视频教程在bilibili:CentOS 替换 yum源 经验分享_哔哩哔哩_bilibili问题原因 解决方法 1. 进入镜像目录 [rootlocalhost ~]# cd /etc/yum.repos.d/ 2.备份文件 [rootlocalhost yum.repos.d]# rename repo bak * 3.寻找阿里镜像源复制 https://developer.aliyun.com/mirror/ …

文件操作Tips,一次搞懂Python中open与with open的差异

前几天在群里看到,有小伙伴在问,为什么代码中打开文件有的时候用open,有的时候用with open,一会close,一会又没有close,真让人摸不着头脑。我们来看一看,这究竟是怎么回事。 在Python中&#xf…

前端测试最强教程 - 实现 fake http 和 fake db

因为想要写出完美的测试,我们就需要模拟各种接口状态,各种动态数据,要求再高点甚至需要模拟鉴权,那这就不是简单的覆盖方法可以实现的。 所以我们需要一些第三方依赖,下面介绍一下实现步骤。 实现步骤 step 1: 新增…

JSP 的 request 内置对象

文章目录 前言一、request 内置对象是什么?二、request 对象 1.访问请求参数2.在作用域中管理属性3.获取 cookie4.解决中文乱码5.获取客户端信息6.显示国际化信息总结 前言 我们在学习 JavaScript 的时候有了解过常用对象,这些对象可以在这门脚本语言中全…

java项目之作业管理系统设计与实现源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的作业管理系统设计与实现源码。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 作业管理系统…

怎么选择一款适合自己的蓝牙耳机?2024开放式耳机选购指南

在选择开放式耳机时,可以从以下几个要点着手: 佩戴舒适程度: 耳挂的设计:好的耳挂设计能让耳机稳稳地戴在耳朵上,且不会给耳部造成过多压迫。比如有些耳机配备了可调节的耳挂,能依照不同人的耳型和佩戴习…

WordPress 要求插件开发人员进行双因素身份验证

全球超过40%的网站由 WordPress 提供支持,其庞大的插件和主题生态系统在全球范围内提供了灵活性和定制性。然而,这种受欢迎程度也使其成为网络攻击的主要目标。 WordPress 将为所有插件和主题开发人员引入强制性双因素身份验证 (2FA),以应对…

Vue3动态导入后端路由

动态获取文件 // modules就是一个map,文件路径作为key,文件对象作为value const modulesimport.meta.glob(../views/**/*.vue)获取到的modules对象如下: 添加动态路由 import {createRouter, createWebHashHistory} from vue-routerconst m…

Vue项目开发注意事项

事项一:项目代码放在本地怎么运行起来 1、首先确定项目对应的node和npm版本 node下载地址 Index of /dist/https://nodejs.org/dist/ node 与 npm版本对应关系 Node.js — Node.js Releases 2、node卸载的时候,会自动把对应的npm卸载掉 情况1&…

【源码】询比价管理系统,招投标采购管理系统

前言: 随着互联网和数字技术的不断发展,企业采购管理逐渐走向数字化和智能化。数字化采购平台作为企业采购管理的新模式,能够提高采购效率、降低采购成本、优化供应商合作效率,已成为企业实现效益提升的关键手段。源码获取本文末…

vue3 实现文本内容超过N行折叠并显示“...展开”组件

1. 实现效果 组件内文字样式取决与外侧定义 组件大小发生变化时,文本仍可以省略到指定行数 文本不超过时, 无展开,收起按钮 传入文本发生改变后, 组件展示新的文本 2. 代码 文件名TextEllipsis.vue <template><div ref"compRef" class"wq-text-ellip…

新疆交投路桥桥梁公司:向“新”求“质”,积蓄发展新势能

向“新”求“质”谋发展&#xff0c;“发展新质生产力是推动高质量发展的内在要求和重要着力点&#xff0c;必须继续做好创新这篇大文章&#xff0c;推动新质生产力加快发展”。以新质生产力塑造国企新的核心竞争力成为实现高质量发展的关键内容&#xff0c;既具有重大理论意义…