Qt基本组件详解:按钮、输入框与容器控件

发布于:2025-07-10 ⋅ 阅读:(13) ⋅ 点赞:(0)

Qt基本组件详解:按钮、输入框与容器控件


目录
  1. 按钮类组件
    • QPushButton
    • QRadioButton
    • QCheckBox
  2. 输入框组件
    • QLineEdit
    • QTextEdit
  3. 容器组件
    • QGroupBox
  4. 综合应用示例
  5. 思维导图总结

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();
}

运行效果描述

  1. 窗口顶部显示"操作"分组框
    • 内部水平排列"保存"和"取消"按钮
  2. 下方显示多行文本编辑区
    • 空白时显示"输入内容…"提示
    • 支持多行文本输入和格式编辑
  3. 窗口尺寸可自由调整
    • 组件随窗口自动缩放

核心要点总结

  1. 按钮类:QPushButton基础交互,QRadioButton互斥选择,QCheckBox多选
  2. 输入控件:QLineEdit处理单行文本,QTextEdit支持富文本编辑
  3. 容器管理:QGroupBox实现视觉分组和逻辑分组
  4. 最佳实践:组合使用按钮组(QButtonGroup)和布局管理器实现复杂界面

原创技术笔记,转载需注明出处。更多系统编程内容持续更新中…


网站公告

今日签到

点亮在社区的每一天
去签到