当前位置: 首页 > news >正文

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

前言

        那么这篇文章其实是我在使用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:简化的输入对话框

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

相关文章:

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

前言 那么这篇文章其实是我在使用Qt的过程当中呢,我发现在Qt使用过程中,在我理解信号和槽这个概念后,在编写槽函数数的时候,发现了自身存在的问题,我的难点是在于当我在编写槽函数的时候,我知道这个槽函数是…...

友元运算符重载函数

目录 1.定义友元运算符重载函数的语法形式 2.双目运算符重载 3.单目运算符重载 1.定义友元运算符重载函数的语法形式 (1)在类的内部,定义友元运算符重载函数的格式如下: friend 函数类型 operator 运算符(形参表&a…...

从0开始实现es6 promise类

主要由基础实现和静态类的实现两部分组成。 1 基础实现(不含静态类) 1.1 使用类实现完成构造函数 实现代码如下,构造函数传入一个回调函数,定义resolve和reject函数,将两个函数作为参数执行回调函数。 // 1. 使用类实…...

XML 编码

XML 编码 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它由万维网联盟(W3C)开发,旨在提供一种标准的方式来结构化、存储和传输数据。XML的设计目标是既易于人类阅读,也易于机器解析。 XML的…...

AI周报(9.22-9.28)

AI应用-Siipet宠物沟通师 Siipet是一款由SiiPet公司推出的创新宠物行为分析相机,旨在通过尖端技术加深宠物与主人之间的情感联系。这款相机利用先进的AI算法,能够自动识别和分析家中宠物的行为,并提供定制化的护理建议。 SiiPet相机的核心功…...

基于RealSense D435相机实现手部姿态重定向

基于Intel RealSense D435相机和MediaPipe的手部姿态检测,进一步简单实现手部姿态与机器人末端的重定向,获取手部的6D坐标(包括位置和姿态)。 假设已经按照【基于 RealSenseD435i相机实现手部姿态检测】配置好所需的库和环境&…...

js中防抖 debounce 节流 throttle 原理 从0手动实现

1 防抖 高频触发事件时,执行损耗高的操作,连续触发过程中,只执行最后一次。 高频事件:input scroll resize等。损耗高:网络请求、dom操作。 实现防抖步骤:1.在回调函数中判断timer是否存在,存在…...

AIGC: 10 AI转文服务器的搭建过程记录

上图是台风席卷城市,现在企业的服务基本都是混合部署,云计算厂商的机房往往可以提供比较好的保护,一般在地下,扛多少级地震,扛多少级台风,而自建机房,往往写字楼经常停电,网络运营上…...

性能测试1初步使用Jmeter

当你看到这边文章的时候,详细你已经知道啥是性能测试,以及也听说过Jmeter了,所以不过多介绍,这里,只是帮助你快速的使用Jmeter来测试接口。 1获取安装包 官网下载地址:https://jmeter.apache.org/downloa…...

OpenGL ES 绘制一个三角形(2)

OpenGL ES 绘制一个三角形(2) 简述 本节我们基于Android系统,使用OpenGL ES来实现绘制一个三角形。在OpenGL ES里,三角形是一个基础图形,其他的图形都可以使用三角形拼接而成,所以我们就的案例就基于这个开始。 在Android系统中…...

QT----Creater14.0,qt5.15无法启动调试,Launching GDB Debugger报红

问题描述 使用QT Creater 14.0 和qt5.15,无法启动调试也没有报错,加载debugger报红 相关文件都有 解决方案 尝试重装QT,更换版本5.15.2,下载到文件夹,shift鼠标右键打开powershell输入 .\qt-online-installer-windows-x64-4.8.0.exe --mirror http://mirrors.ustc.edu.cn…...

初试React前端框架

文章目录 一、React概述二、React核心特性1、组件化设计2、虚拟DOM3、生态系统 三、实例操作1、准备工作2、创建项目结构3、启动项目4、编写React组件5、添加React样式6、运行项目,查看效果 四、实战小结 一、React概述 大家好,今天我们将一起探索React…...

华为OD机试真题---手机App防沉迷系统

题目概述 智能手机在方便我们生活的同时,也侵占了大量时间。手机App防沉迷系统旨在帮助用户合理规划手机App使用时间,确保在正确的时间做正确的事。系统的主要功能包括: 在一天24小时内,可注册每个App的允许使用时段。一个时段只…...

物流货运托运发货单二联三联打印软件定制 佳易王物流单管理系统操作教程

一、前言 物流货运托运发货单二联三联打印软件定制 佳易王物流单管理系统操作教程 1、软件为绿色免安装版,解压即可使用,已经内置数据库,不需再安装。 2、软件下载可以到本文章最后点击官网卡片下。 二、软件程序教程 1、如图,…...

代码随想录算法训练营| 找树左下角的值 、 路径总和 、 从中序与后序遍历序列构造二叉树

找树左下角的值 题目 参考文章 思路:这里寻找最左下角的值,其实用前中后序都是可以的,只要保证第一遍历的是左边开始就可以。设置Deep记录遍历的最大深度,deep记录当前深度。当遇到叶子节点时而且当前深度比最大深度还大则更换最…...

【开源免费】基于SpringBoot+Vue.JS服装销售平台(JAVA毕业设计)

博主说明:本文项目编号 T 054 ,文末自助获取源码 \color{red}{T054,文末自助获取源码} T054,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

人工智能与自然语言处理发展史

前言 在科技的浪潮中,人工智能 (AI) 作为一股不可阻挡的力量,持续推动着社会与科技的进步。本博客旨在深入剖析人工智能及其核心领域——神经网络、自然语言处理、统计语言模型、以及大规模语言模型——的演进历程,以专业的视角展现这一领域…...

0基础跟德姆(dom)一起学AI 机器学习01-机器学习概述

【知道】人工智能 - Artificial Intelligence 人工智能 - AI is the field that studies the synthesis and analysis of computational agents that act intelligently - AI is to use computers to analog and instead of human brain - 释义 - 仿智; 像人…...

yakit使用教程(一,下载并进行基础配置)

一,yakit简介 YAKIT(Yet Another Knife for IT Security)是一款网络安全单兵工具,专为个人渗透测试员和安全研究人员设计。它整合了一系列实用的安全工具,例如密码破解工具、网络扫描器、漏洞利用工具等,帮…...

计算机毕业设计电影票购买网站 在线选票选座 场次订票统计 新闻留言搜索/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序

系统功能 ‌在线选票选座‌:用户可浏览电影场次,选择座位并生成订单。‌场次订票统计‌:系统实时统计各场次订票情况,便于影院管理。‌新闻发布与留言‌:发布最新电影资讯,用户可留言互动。‌搜索功能‌&a…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...