【QT/C++】Qt基础控件详解:输入与显示控件(超详细) - 详解

news/2025/12/6 14:17:21/文章来源:https://www.cnblogs.com/yangykaifa/p/19315691

【QT/C++】Qt基础控件详解:输入与显示控件(超详细)

  • 本文主要详细说明Qt基础控件:输入与显示控件。

(关注不迷路哈!!!)


1. 输入控件(Input Widgets)

1.1 ComboBox组合框控件

ComboBox是一个下拉列表控件,允许用户从预定义的选项中选择一个项目。
在这里插入图片描述

#include <QComboBox>// 添加信息到ComboBoxcomboBox->addItem("选项1");comboBox->addItem(QIcon(":/icons/item.png"), "带图标的选项");comboBox->addItems(QStringList() << "选项2" << "选项3" << "选项4");// 带用户数据的添加方式comboBox->addItem("选项", QVariant(100));// 获取用户选择的信号connect(comboBox, &QComboBox::activated,[=](const QString &text) {qDebug() << "用户选择了:" << text;});// 其他常用方法QString currentText = comboBox->currentText();  // 获取当前文本int currentIndex = comboBox->currentIndex();    // 获取当前索引comboBox->setCurrentIndex(2);                   // 设置当前选择

1.2 LineEdit文本输入控件

LineEdit是一个单行文本输入控件,支持文本编辑功能。
在这里插入图片描述

#include <QLineEdit>// 基本使用lineEdit->setText("默认文本");QString text = lineEdit->text();// 设置输入模式lineEdit->setEchoMode(QLineEdit::Password);     // 密码模式lineEdit->setEchoMode(QLineEdit::Normal);       // 普通模式// 输入验证lineEdit->setValidator(new QIntValidator(0, 100, this));  // 限制为0-100的整数// 信号连接connect(lineEdit, &QLineEdit::textChanged,[=](const QString &text) {qDebug() << "文本已更改:" << text;});connect(lineEdit, &QLineEdit::editingFinished,[=]() {qDebug() << "编辑完成";});connect(lineEdit, &QLineEdit::returnPressed,[=]() {qDebug() << "回车键被按下";});

1.3 Dial旋钮控件

Dial是一个圆形旋钮控件,用户可以通过旋转来选择数值。

#include <QDial>// 设置范围和值dial->setRange(0, 100);          // 设置范围dial->setMinimum(0);             // 设置最小值dial->setMaximum(100);           // 设置最大值dial->setValue(50);              // 设置当前值// 获取当前值int value = dial->value();// 信号连接connect(dial, &QDial::valueChanged,[=](int value) {qDebug() << "值改变为:" << value;});connect(dial, &QDial::sliderMoved,[=](int value) {qDebug() << "旋钮移动到:" << value;});

2. 显示控件(Display Widgets)

2.1 TextBrowser文本显示控件

TextBrowser是一个富文本显示控件,支持HTML格式的文本显示。

#include <QTextBrowser>// 显示纯文本textBrowser->setPlainText("这是纯文本内容");// 显示HTML内容
textBrowser->setHtml("<h1>标题</h1><p>段落内容</p>");// 追加文本textBrowser->append("追加的内容");// 常用操作textBrowser->clear();            // 清空内容textBrowser->selectAll();        // 全选textBrowser->copy();             // 复制选中内容

2.2 LCDNumber数字显示控件

LCDNumber模拟液晶数字显示屏,用于显示数字。

#include <QLCDNumber>// 显示不同类型的数值lcdNumber->display(123);          // 显示整数lcdNumber->display(3.14);         // 显示浮点数lcdNumber->display("Hello");      // 显示字符串// 设置显示模式lcdNumber->setDecMode();          // 十进制(默认)lcdNumber->setHexMode();          // 十六进制lcdNumber->setBinMode();          // 二进制lcdNumber->setOctMode();          // 八进制// 设置显示位数lcdNumber->setDigitCount(5);      // 设置显示位宽为5位// 设置样式lcdNumber->setSegmentStyle(QLCDNumber::Flat);  // 平面样式

2.3 ProgressBar进度条控件

ProgressBar用于显示任务的进度状态。

#include <QProgressBar>// 设置范围和当前值progressBar->setRange(0, 100);    // 设置范围0-100progressBar->setMinimum(0);       // 设置最小值progressBar->setMaximum(100);     // 设置最大值progressBar->setValue(50);        // 设置当前值// 获取当前状态int value = progressBar->value();      // 获取当前值int min = progressBar->minimum();      // 获取最小值int max = progressBar->maximum();      // 获取最大值// 设置文本可见性progressBar->setTextVisible(true);     // 显示进度文本// 设置方向progressBar->setOrientation(Qt::Horizontal);  // 水平方向progressBar->setOrientation(Qt::Vertical);    // 垂直方向

3. 综合示例:多功能控制面板

以下是一个综合示例,展示如何将这些输入和显示控件结合使用,创建一个多功能控制面板:

3.1 头文件(controlpanel.h)

#ifndef CONTROLPANEL_H
#define CONTROLPANEL_H
#include <QMainWindow>#include <QComboBox>#include <QLineEdit>#include <QDial>#include <QTextBrowser>#include <QLCDNumber>#include <QProgressBar>#include <QPushButton>#include <QLabel>#include <QVBoxLayout>#include <QHBoxLayout>#include <QGridLayout>#include <QTimer>class ControlPanel : public QMainWindow{Q_OBJECTpublic:ControlPanel(QWidget *parent = nullptr);~ControlPanel();private slots:void onComboBoxActivated(const QString &text);void onLineEditChanged(const QString &text);void onDialValueChanged(int value);void onDialSliderMoved(int value);void onStartButtonClicked();void onStopButtonClicked();void updateProgress();private:void setupUI();void setupConnections();// 输入控件QComboBox *modeComboBox;QLineEdit *inputLineEdit;QDial *controlDial;// 显示控件QTextBrowser *infoTextBrowser;QLCDNumber *valueLCD;QProgressBar *taskProgressBar;// 控制按钮QPushButton *startButton;QPushButton *stopButton;// 定时器QTimer *progressTimer;int progressValue;};#endif // CONTROLPANEL_H

3.2 实现文件(controlpanel.cpp)

#include "controlpanel.h"
#include <QApplication>#include <QWidget>#include <QMessageBox>ControlPanel::ControlPanel(QWidget *parent): QMainWindow(parent), progressValue(0){setupUI();setupConnections();// 初始化定时器progressTimer = new QTimer(this);connect(progressTimer, &QTimer::timeout, this, &ControlPanel::updateProgress);}ControlPanel::~ControlPanel(){}void ControlPanel::setupUI(){// 创建输入控件modeComboBox = new QComboBox;modeComboBox->addItems(QStringList() << "模式1" << "模式2" << "模式3" << "自定义模式");inputLineEdit = new QLineEdit;inputLineEdit->setPlaceholderText("请输入参数...");controlDial = new QDial;controlDial->setRange(0, 100);controlDial->setValue(50);controlDial->setNotchesVisible(true);// 创建显示控件infoTextBrowser = new QTextBrowser;infoTextBrowser->setPlainText("系统信息显示区域");valueLCD = new QLCDNumber;valueLCD->setDigitCount(4);valueLCD->display(50);valueLCD->setSegmentStyle(QLCDNumber::Flat);taskProgressBar = new QProgressBar;taskProgressBar->setRange(0, 100);taskProgressBar->setValue(0);taskProgressBar->setTextVisible(true);// 创建控制按钮startButton = new QPushButton("开始任务");stopButton = new QPushButton("停止任务");stopButton->setEnabled(false);// 创建布局auto *inputLayout = new QHBoxLayout;inputLayout->addWidget(new QLabel("工作模式:"));inputLayout->addWidget(modeComboBox);inputLayout->addWidget(new QLabel("参数设置:"));inputLayout->addWidget(inputLineEdit);auto *dialLayout = new QVBoxLayout;dialLayout->addWidget(new QLabel("数值调节"), 0, Qt::AlignCenter);dialLayout->addWidget(controlDial);dialLayout->addWidget(valueLCD);auto *buttonLayout = new QHBoxLayout;buttonLayout->addWidget(startButton);buttonLayout->addWidget(stopButton);auto *mainLayout = new QVBoxLayout;mainLayout->addLayout(inputLayout);mainLayout->addLayout(dialLayout);mainLayout->addWidget(new QLabel("系统信息:"));mainLayout->addWidget(infoTextBrowser);mainLayout->addWidget(new QLabel("任务进度:"));mainLayout->addWidget(taskProgressBar);mainLayout->addLayout(buttonLayout);auto *centralWidget = new QWidget;centralWidget->setLayout(mainLayout);setCentralWidget(centralWidget);setWindowTitle("多功能控制面板");resize(500, 400);}void ControlPanel::setupConnections(){connect(modeComboBox, &QComboBox::activated, this, &ControlPanel::onComboBoxActivated);connect(inputLineEdit, &QLineEdit::textChanged, this, &ControlPanel::onLineEditChanged);connect(controlDial, &QDial::valueChanged, this, &ControlPanel::onDialValueChanged);connect(controlDial, &QDial::sliderMoved, this, &ControlPanel::onDialSliderMoved);connect(startButton, &QPushButton::clicked, this, &ControlPanel::onStartButtonClicked);connect(stopButton, &QPushButton::clicked, this, &ControlPanel::onStopButtonClicked);}void ControlPanel::onComboBoxActivated(const QString &text){infoTextBrowser->append(QString("切换到工作模式: %1").arg(text));}void ControlPanel::onLineEditChanged(const QString &text){infoTextBrowser->append(QString("参数设置更新: %1").arg(text));}void ControlPanel::onDialValueChanged(int value){valueLCD->display(value);infoTextBrowser->append(QString("数值调节: %1").arg(value));}void ControlPanel::onDialSliderMoved(int value){// 滑动过程中的实时更新taskProgressBar->setValue(value);}void ControlPanel::onStartButtonClicked(){startButton->setEnabled(false);stopButton->setEnabled(true);progressValue = 0;taskProgressBar->setValue(0);// 启动进度更新定时器progressTimer->start(100);  // 每100ms更新一次infoTextBrowser->append("任务开始执行...");}void ControlPanel::onStopButtonClicked(){startButton->setEnabled(true);stopButton->setEnabled(false);// 停止进度更新定时器progressTimer->stop();infoTextBrowser->append("任务已停止");}void ControlPanel::updateProgress(){progressValue += 1;if (progressValue > 100) {progressValue = 0;progressTimer->stop();startButton->setEnabled(true);stopButton->setEnabled(false);infoTextBrowser->append("任务执行完成");}taskProgressBar->setValue(progressValue);}

3.3 主函数(main.cpp)

#include "controlpanel.h"
#include <QApplication>int main(int argc, char *argv[]){QApplication app(argc, argv);ControlPanel panel;panel.show();return app.exec();}#include "main.moc"

这个综合示例演示了以下知识点:

  1. ComboBox的使用:提供模式选择功能
  2. LineEdit的使用:接收用户输入参数
  3. Dial的使用:通过旋钮调节数值
  4. TextBrowser的使用:显示系统信息和日志
  5. LCDNumber的使用:显示当前数值
  6. ProgressBar的使用:显示任务进度
  7. 控件间信号与槽的连接:实现控件间的交互
  8. 定时器的使用:模拟任务执行进度

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

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

相关文章

2025年电线电缆,国标电线电缆,铜芯电线电缆厂家推荐,导电工艺与市场口碑深度解析

引言在当今全球化的工业发展进程中,电线电缆作为电力传输和信息传递的关键基础设施,其质量和性能直接影响着各个行业的稳定运行。根据国际权威行业协会的测评数据以及相关白皮书显示,全球电线电缆市场规模正以每年[…

2025年12月YJV电力电缆,YJY电力电缆,橡套电力电缆厂家最新推荐:耐温性能测评与选购建议

引言在 2025 年 12 月的电力电缆市场中,YJV 电力电缆、YJY 电力电缆以及橡套电力电缆的应用愈发广泛,其耐温性能直接影响着电力传输的稳定性与安全性。国内线缆行业协会近期发布的白皮书显示,过去一年因电缆耐温性能…

MySQL 基本原理和架构(通俗易懂)

🚀 一句话先把全貌讲清楚(你一定要先有画面) MySQL 就是一台小型“仓库 + 快递中心”: 里面有货架(表), 有仓库管理员(存储引擎), 有前台接单员(SQL 层), 有账本(redo / undo), 有锁(控制别人别乱动…

完整教程:C语言变量与输入输出详解——从printf到scanf的全掌握

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

智能安全帽哪家好?哪家智能安全帽质量管控严

在工业生产与工程建设领域,智能安全帽作为保障作业人员安全、提升管理效率的核心装备,其质量管控与技术性能直接关系到企业安全生产与运营成本。面对市场上鱼龙混杂的智能安全帽厂家,如何选择质量管控严格、技术可靠…

实测openGauss 6.0 LTS向量版:国产数据库的 RAG 实践之路 - 教程

实测openGauss 6.0 LTS向量版:国产数据库的 RAG 实践之路 - 教程2025-12-06 14:06 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !im…

2025年评价高的机械设备沙盘模型热门厂家推荐榜单

随着智能制造、装备数字化、工业产线升级和智能工厂建设的加速,机械设备沙盘模型在2025年的需求显著增长。机械设备模型不仅承担展示设备原理、结构布局、工艺流程和产线逻辑的作用,同时还是工业展厅、产业园推介会、…

2025年度天津短视频代运营TOP5权威推荐:力企业流量破局

短视频已成为企业品牌传播与获客的核心阵地,2024年短视频营销市场规模超3200亿元,年增速达58%。但行业调研显示,62%的企业因选品不当陷入流量低迷、转化断层困境:不懂算法导致播放量低于500、缺乏专业团队引发内容…

2025激光设备市场权威排名:华工激光引领国产替代浪潮

一、全球激光设备市场格局与权威排名 据 GLII(高工激光产业研究所)2025 年最新数据,全球激光设备市场规模突破 1800 亿元,中国以 62% 的市场份额成为全球产业核心。结合技术实力、市场占有率、用户口碑等多维度评估…

2025年天津关键词SEO机构排行榜,五大专业服务商测评推荐

为帮企业突破关键词排名瓶颈、高效获取精准流量,我们从关键词优化技术深度(如算法适配、排名稳定性)、流量转化能力(如关键词布局与询盘链路匹配)、行业垂直经验(如本地生活/制造业关键词策略)及真实客户口碑(…

2025年辽宁建筑资质升级推荐排行榜,新测评精选服务公司推荐

为帮助建筑业企业高效锁定适配自身需求的建筑资质升级合作伙伴,避免资质办理走弯路,我们从专业办理经验(如垂直行业案例积累)、全流程服务能力(覆盖前期材料筹备到后期资质维护)、真实客户口碑(侧重同行业项目反…

2025年12月鸡肠粉加工设备厂家推荐:权威排行榜单与选购指南

一、引言 鸡肠粉加工设备作为畜禽屠宰废弃物资源化利用的核心装备,在循环经济和环保政策推动下,已成为屠宰场、饲料原料生产企业及养殖集团提升副产品附加值的关键工具。目标用户群体主要包括中大型屠宰加工企业、动…

NOI Plus 游记

outro.day -2 放学,和 snowflavour 聊天,激动地说:后天就是 NOIP 了,NOI 的省赛也是 NOI,后天,决定命运的一战,大家都给我加油!!!day -1 下午到了淄博,晚上去试机,机房很大,然后我找不着座位了,然后才发…

2025年12月鸡肠粉加工设备厂家推荐:权威排行榜单及深度对比分析指南

一、引言 鸡肠粉加工设备作为畜禽屠宰废弃物资源化利用的核心装备,其技术性能与可靠性直接关系到屠宰企业的副产物附加值与环保合规水平。当前,随着国家对畜禽无害化处理要求的持续强化以及饲料原料替代需求的日益增…

对话式AI竞赛Alexa Prize新平台上线

Alexa Prize 项目已将其信息中心迁移至新的科学平台,该项目包含SocialBot、TaskBot和SimBot三大挑战,旨在通过大学团队竞赛推动对话式人工智能技术的发展,涉及自然语言处理与多模态交互。Alexa Prize有了新家 Alexa…

2025年12月鸡肠粉加工设备厂家推荐:全维度对比排行榜单及选购策略分析

一、引言 鸡肠粉加工设备作为屠宰废弃物资源化利用的核心装备,在畜禽加工产业链中扮演着关键角色。该设备通过高温蒸发、脱脂干燥等工艺,将鸡肠等副产品转化为高附加值的动物蛋白饲料原料,既解决了环保合规问题,又…

2025年度天津抖音代运营专业公司五大推荐:甄选口碑好的抖音

2024年短视频营销市场规模突破1200亿元,抖音以68%的用户渗透率成为企业获客核心阵地,但82%的企业因不懂算法、缺乏专业团队陷入低播放、无转化困境——账号播放量长期低于500、粉丝流失率超40%、投流ROI不足1:1的案例…

2025年12月肉粉加工设备厂家推荐:专业对比评测排行榜单深度分析指南

一、引言 肉粉加工设备作为畜禽屠宰废弃物资源化利用的核心装备,在循环农业与环保产业中扮演着关键角色。目标用户群体主要包括规模化养殖企业、屠宰食品加工企业、有机肥料生产商以及农业环保项目投资商,其核心需求…

2025年靠谱的农业沙盘模型最新TOP品牌厂家排行

随着智慧农业、现代农场管理、数字乡村建设的不断推进,农业展示方式正在向更精细化、可视化、高互动性方向发展。农业沙盘模型作为农业规划、科研教育、项目推介、示范园展示的重要工具,需求量在2025年持续增长。特别…

遗忘

作者:So_noSlack-2025.12.03今天我想讲一个贴近生活的话题,虽然不是很具体,但真切的影响到我们的生活---遗忘。 首先,何为遗忘?其实我就是个非常鲜活的例子,前段停课期间,我经常跟 wbw 约饭,大概就是前一天在宿…