QT学习笔记(常用控件)
QT 学习笔记
一、QT GUI 类继承体系
QObject(基类)
└── QWidget(所有可视化控件基类)
├── QAbstractButton(按钮类基类)
│ ├── QPushButton
│ ├── QRadioButton
│ └── QCheckBox
├── QFrame(带边框控件基类)
│ └── QLabel
├── QLayout(布局管理器基类)
└── 其他控件类...
核心类说明:
- QObject:所有QT对象的基类,提供信号槽机制
- QWidget:所有可视化控件的基类,包含坐标、尺寸等基础属性
- QLayout:布局管理抽象类,派生出具体布局管理器
二、布局管理器
常用布局类型
布局类型 | 描述 |
---|---|
QVBoxLayout | 垂直排列控件(上下布局) |
QHBoxLayout | 水平排列控件(左右布局) |
QGridLayout | 网格状布局 |
QFormLayout | 表单式布局(标签+输入) |
使用要点
cpp
// 示例:创建垂直布局
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(new QPushButton("Button1"));
layout->addWidget(new QLineEdit);
setLayout(layout); // 应用到窗口
三、输入输出控件
输出控件
- QLabel:文本/图片显示
- QProgressBar:进度条
- QLCDNumber:数字显示屏
输入控件
控件类型 | 用途 |
---|---|
QLineEdit | 单行文本输入 |
QTextEdit | 多行富文本编辑 |
QSpinBox | 数字输入(带上下箭头) |
QComboBox | 下拉选择框 |
四、按钮类控件
常用按钮类型
- QPushButton:标准按钮
- QRadioButton:单选按钮(需配合QButtonGroup)
- QCheckBox:多选按钮
- QToolButton:工具栏按钮
按钮状态控制
cpp
QPushButton *btn = new QPushButton("Submit");
btn->setEnabled(false); // 禁用按钮
btn->setIcon(QIcon(":/icon.png")); // 设置图标
五、容器类控件
常用容器
- QGroupBox:带标题的分组框
- QTabWidget:标签页容器
- QScrollArea:可滚动区域
- QStackedWidget:堆叠式容器(多页面切换)
容器使用示例
cpp
QTabWidget *tabs = new QTabWidget;
tabs->addTab(new QTextEdit, "Document"); // 添加页面
tabs->setCurrentIndex(0); // 设置默认页
六、信号与槽机制
核心概念
- 信号(Signal):事件触发的信号(如按钮点击)
- 槽(Slot):接收信号后执行的函数
连接方式
cpp
// 传统连接语法
connect(btn, SIGNAL(clicked()), this, SLOT(onClick()));
// Qt5+新语法(推荐)
connect(btn, &QPushButton::clicked, this, &MyClass::onClick);
// Lambda表达式连接
connect(btn, &QPushButton::clicked, [=](){
qDebug() << "Button clicked!";
});
七、核心编程思想
- 对象树机制:父子对象自动管理内存
- 跨平台特性:一次编写,多平台编译运行
- MVC模式:数据-视图分离设计(适用于复杂控件)
学习建议
- 优先掌握QWidget的常用属性和方法
- 熟练使用Qt Designer进行界面设计
- 理解信号槽的线程安全机制
- 多参考Qt Assistant官方文档