Qt基本组件详解:按钮、输入框与容器控件
Qt基本组件详解:按钮、输入框与容器控件
目录
- 按钮类组件
- QPushButton
- QRadioButton
- QCheckBox
- 输入框组件
- QLineEdit
- QTextEdit
- 容器组件
- QGroupBox
- 综合应用示例
- 思维导图总结
1. 按钮类组件
1.1 QPushButton(普通按钮)
功能:基础交互按钮,支持点击事件
核心特性:
- 文本/图标显示
- 状态变化(按下/悬停)
- 快捷键支持
源码示例:
#include <QPushButton>QPushButton* btn = new QPushButton("提交", this);
btn->setGeometry(50, 30, 100, 40); // 位置(x,y) 尺寸(宽,高)// 连接点击信号
connect(btn, &QPushButton::clicked, [](){qDebug() << "按钮被点击!";
});
运行效果:
- 显示灰色矩形按钮,文字"提交"
- 鼠标悬停时高亮显示
- 点击后控制台输出提示
1.2 QRadioButton(单选按钮)
功能:互斥选择,同一容器内只能选一个
特性:
- 自动互斥(同父组件内)
- 支持按钮组管理
源码示例:
#include <QRadioButton>
#include <QButtonGroup>QRadioButton* radio1 = new QRadioButton("选项1", this);
QRadioButton* radio2 = new QRadioButton("选项2", this);
radio1->move(50, 80);
radio2->move(50, 110);// 创建按钮组
QButtonGroup* group = new QButtonGroup(this);
group->addButton(radio1, 1); // ID=1
group->addButton(radio2, 2); // ID=2// 选择变化事件
connect(group, QOverload<QAbstractButton*>::of(&QButtonGroup::buttonClicked),[](QAbstractButton* btn){qDebug() << "选中ID:" << group->id(btn);});
运行效果:
- 显示两个圆形选择框
- 点击"选项1"时,"选项2"自动取消
- 选择时打印对应ID
1.3 QCheckBox(复选框)
功能:多选控件,支持三态(选中/未选/部分选)
特性:
- 独立选择
- tristate模式支持
源码示例:
#include <QCheckBox>QCheckBox* check1 = new QCheckBox("苹果", this);
QCheckBox* check2 = new QCheckBox("香蕉", this);
check1->move(50, 150);
check2->move(50, 180);// 三态模式
check2->setTristate(true);// 状态变化事件
connect(check1, &QCheckBox::stateChanged, [](int state){qDebug() << (state ? "选中" : "取消");
});
运行效果:
- "苹果"显示方形复选框
- "香蕉"显示带方框的复选框(三态)
- 勾选时控制台输出状态
2. 输入框组件
2.1 QLineEdit(单行输入框)
功能:单行文本输入
核心特性:
- 密码模式
- 输入验证
- 占位提示文本
源码示例:
#include <QLineEdit>QLineEdit* lineEdit = new QLineEdit(this);
lineEdit->setGeometry(50, 220, 200, 30);
lineEdit->setPlaceholderText("请输入用户名");// 密码模式
QLineEdit* pwdEdit = new QLineEdit(this);
pwdEdit->setGeometry(50, 260, 200, 30);
pwdEdit->setEchoMode(QLineEdit::Password); // 密码掩码
运行效果:
- 显示矩形输入框,无输入时显示灰色提示文本
- 密码框输入时显示圆点替代字符
2.2 QTextEdit(多行文本编辑)
功能:富文本编辑器
特性:
- 支持HTML格式
- 文本查找/替换
- 滚动条支持
源码示例:
#include <QTextEdit>QTextEdit* textEdit = new QTextEdit(this);
textEdit->setGeometry(50, 300, 300, 200);
textEdit->setHtml("<b>加粗文本</b> <i>斜体文本</i>");// 插入纯文本
textEdit->append("追加新行");
运行效果:
- 显示带滚动条的多行编辑区
- 首行显示加粗和斜体HTML文本
- 底部追加普通文本行
3. 容器组件:QGroupBox
功能:创建分组容器,增强布局逻辑
特性:
- 带标题边框
- 管理内部组件状态
- 支持单选组容器
源码示例:
#include <QGroupBox>
#include <QVBoxLayout>QGroupBox* groupBox = new QGroupBox("用户信息", this);
groupBox->setGeometry(300, 30, 250, 200);// 内部布局
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(new QLineEdit("姓名"));
layout->addWidget(new QLineEdit("电话"));
groupBox->setLayout(layout);// 单选组容器
QGroupBox* radioGroup = new QGroupBox("性别", this);
radioGroup->setGeometry(300, 240, 250, 100);
QVBoxLayout* radioLayout = new QVBoxLayout;
radioLayout->addWidget(new QRadioButton("男"));
radioLayout->addWidget(new QRadioButton("女"));
radioGroup->setLayout(radioLayout);
运行效果:
- 显示带"用户信息"标题的矩形框
- 内部包含两个单行输入框
- "性别"分组框包含两个互斥单选按钮
4. 综合应用示例
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QButtonGroup>
#include <QGroupBox>
#include <QTextEdit>
#include <QVBoxLayout>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;window.setWindowTitle("Qt组件综合示例");window.resize(600, 400);// 主布局QVBoxLayout* mainLayout = new QVBoxLayout(&window);// 按钮组QGroupBox* btnGroup = new QGroupBox("操作");QHBoxLayout* btnLayout = new QHBoxLayout;btnLayout->addWidget(new QPushButton("保存"));btnLayout->addWidget(new QPushButton("取消"));btnGroup->setLayout(btnLayout);// 文本编辑区QTextEdit* textEdit = new QTextEdit;textEdit->setPlaceholderText("输入内容...");mainLayout->addWidget(btnGroup);mainLayout->addWidget(textEdit);window.show();return app.exec();
}
运行效果描述:
- 窗口顶部显示"操作"分组框
- 内部水平排列"保存"和"取消"按钮
- 下方显示多行文本编辑区
- 空白时显示"输入内容…"提示
- 支持多行文本输入和格式编辑
- 窗口尺寸可自由调整
- 组件随窗口自动缩放
核心要点总结:
- 按钮类:QPushButton基础交互,QRadioButton互斥选择,QCheckBox多选
- 输入控件:QLineEdit处理单行文本,QTextEdit支持富文本编辑
- 容器管理:QGroupBox实现视觉分组和逻辑分组
- 最佳实践:组合使用按钮组(QButtonGroup)和布局管理器实现复杂界面
原创技术笔记,转载需注明出处。更多系统编程内容持续更新中…