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

Qt基本控件

Qt 的基本控件是构建用户界面的基础,涵盖了按钮、输入框、容器、显示组件等,适用于传统 Widget 开发(基于 QWidget)。以下是常用基本控件的分类总结:

一、按钮类控件

用于触发交互操作,如提交、取消、选择等。

  • QPushButton:最基础的按钮,支持文本、图标显示,可设置点击状态(如默认按钮、禁用状态)。
    示例:QPushButton *btn = new QPushButton("点击提交", this);
  • QToolButton:工具按钮,通常用于工具栏,可仅显示图标或图文结合,支持下拉菜单。
  • QRadioButton:单选按钮,多个同组中只能选中一个(需配合 QButtonGroup 管理分组)。
  • QCheckBox:复选按钮,支持勾选 / 取消勾选,可用于 “多选” 场景(如设置选项)。

二、输入类控件

用于接收用户输入的文本、数值等信息。

  • QLineEdit:单行文本输入框,支持输入限制(如密码模式、数字输入)、提示文本(placeholder)。
    示例:lineEdit->setEchoMode(QLineEdit::Password);(密码隐藏显示)
  • QTextEdit:多行文本输入框,支持富文本编辑(如字体、颜色设置),可用于输入大段文字。
  • QSpinBox:数值调节器,通过上下箭头或直接输入设置整数,支持范围限制(如 0-100)。
  • QDoubleSpinBox:与 QSpinBox 类似,但支持小数输入。
  • QComboBox:下拉列表框,可选择预设选项或允许用户输入(setEditable(true)),适用于 “单选” 场景。

三、显示类控件

用于展示文本、图片、状态等信息。

  • QLabel:标签控件,显示文本、图片(QPixmap)或链接,支持 HTML 格式文本(如 <b>加粗</b>)。
    示例:label->setPixmap(QPixmap("image.png"));(显示图片)
  • QProgressBar:进度条,展示任务进度(如文件下载),支持设置范围(0-100)和当前值。
  • QStatusBar:状态栏,通常位于窗口底部,显示临时状态信息(如 “已保存”)。

四、容器类控件

用于组织其他控件,实现界面布局。

  • QWidget:所有控件的基类,可作为容器包裹其他控件(需配合布局管理器使用)。
  • QFrame:带边框的容器,支持边框样式(如实线、虚线),常用于分隔界面区域。
  • QGroupBox:分组框,带标题和边框,可将相关控件归类(如 “用户信息” 分组)。
  • QTabWidget:标签页容器,通过切换标签页展示不同内容(如浏览器的多标签页)。
  • QScrollArea:滚动区域,当内容超出显示范围时,提供滚动条查看完整内容。

五、布局管理器(辅助控件布局)

虽非可视化控件,但用于自动管理控件的位置和大小,确保界面在窗口缩放时保持整洁。

  • QVBoxLayout:垂直布局,控件按上下顺序排列。
  • QHBoxLayout:水平布局,控件按左右顺序排列。
  • QGridLayout:网格布局,控件按行 / 列坐标排列(如表格形式)。
  • QFormLayout:表单布局,自动对齐 “标签 - 输入框” 对(如用户注册表单)。

六、其他常用控件

  • QSlider:滑动条,通过拖动滑块设置数值(如音量调节),支持水平 / 垂直方向。
  • QCalendarWidget:日历控件,用于选择日期,可返回选中的 QDate 对象。
  • QMenuBar:菜单栏,位于窗口顶部,包含下拉菜单(如 “文件”“编辑” 菜单)。
  • QToolBar:工具栏,通常位于菜单栏下方,可放置工具按钮,支持拖拽移动。

这些基本控件可通过 Qt Designer 可视化拖放使用,也可通过代码创建。它们是构建 Qt 桌面应用界面的基础,结合信号与槽机制可实现丰富的交互逻辑。对于复杂界面,还可通过自定义控件(继承现有控件)扩展功能。

http://www.dtcms.com/a/330784.html

相关文章:

  • 飞算JavaAI金融风控场景实践:从实时监测到智能决策的全链路安全防护
  • 西门子TIA-FOR循环多路PID控制器(PID_Compact)
  • VirtualBox虚拟机Ubuntu18.04安装hdl_localization保姆级教程
  • 【自动化运维神器Ansible】template模块深度解析:动态配置文件生成的艺术
  • RxJava Android 创建操作符实战:从数据源到Observable
  • 十一,算法-快速排序
  • 大带宽服务器具体是指什么?
  • 十分钟学会一个算法 —— 快速排序
  • 【03】VMware安装麒麟操作系统kylin10sp3
  • Docker运行python项目:使用Docker成功启动FastAPI应用
  • vue3+leaflet案例:告警系统GIS一张图(附源码下载)
  • Mybatis实现页面增删改查
  • 服务器的定义-哈尔滨云前沿
  • [机器学习]07-基于多层感知机的鸢尾花数据集分类
  • Effective Java笔记:要在公有类而非公有域中使用访问方法
  • 解决Maven编译时JAVA_HOME配置错误问题:从报错到根治的完整方案
  • 自动驾驶与人形机器人的技术分水岭
  • springboot博客实战笔记02
  • React.memo、useMemo 和 React.PureComponent的区别
  • 智慧城市SaaS平台/专项管理系统
  • 板子识别出来的所有端点号等信息
  • C++中的链式操作原理与应用(三):专注于异步操作延的C++开源库 continuable
  • 决策树 >> 随机森林
  • 智慧工地从工具叠加到全要素重构的核心引擎
  • Claude Code频繁出错怎么办?深入架构层面的故障排除指南
  • 【Linux学习|黑马笔记|Day4】IP地址、主机名、网络请求、下载、端口、进程管理、主机状态监控、环境变量、文件的上传和下载、压缩和解压
  • 【论文阅读】基于表面肌电信号的下肢多关节运动估计:一种深度卷积神经网络方法
  • [小练习]生成54张扑克牌,洗牌。
  • 解决 VSCode 运行 Python 时 ModuleNotFoundError: No module named ‘open_webui‘ 问题
  • 三角洲知识点