C++系列课程
02什么是变量
第一阶段:基础入门
- 安装vs2022
- 什么是变量(c++)
- int和doublue-从而了解变量在计算机存储是长什么样的
- 什么是ASCII编码-从而了解变量在计算机存储是长什么样的
- 什么是地址
- 什么是指针
- if-for-while-switch
- 什么是数组-相同的数据类型组合在一起表示就是数组
- 什么是结构体struct-不同的数据类型组合在一起就是结构体(类)
- 什么是函数
- 函数方法是怎么存储的
- 内存的代码段(Text Segment)、数据段(Data Segment)、BSS 段、堆(Heap)、栈(Stack)
- 变量的作用范围
- 什么是引用
- 什么是类型转换
- c++的编译流程
-
C++简介与环境搭建
-
C++的历史与特点
-
开发工具安装(如GCC、Visual Studio、CLion等)
-
第一个C++程序:Hello World
-
代码编译与运行流程
-
基础语法与数据类型
-
变量、常量与命名规则
-
基本数据类型(int, float, char, bool等)
-
运算符与表达式
-
类型转换(隐式与显式)
-
流程控制
-
条件语句(if-else, switch-case)
-
循环结构(for, while, do-while)
-
跳转语句(break, continue, goto)
-
函数与作用域
-
函数的定义与调用
-
参数传递(值传递、引用传递)
-
函数重载与默认参数
-
变量作用域与生命周期
第二阶段:核心特性
-
数组与字符串
- 静态数组与动态数组(指针操作)
- C风格字符串与C++
std::string - 多维数组与字符串处理函数
-
指针与引用
- 指针的基本概念与操作
- 指针与数组的关系
- 动态内存分配(new/delete)
- 引用与右值引用(C++11)
-
结构体与枚举
- 自定义数据类型(struct)
- 枚举类型(enum)与枚举类(enum class)
- 联合体(union)简介
-
面向对象编程(OOP)
- 类与对象的概念
- 构造函数与析构函数
- 访问控制(public/private/protected)
- 静态成员与友元函数
- this指针与运算符重载
第三阶段:进阶特性
-
继承与多态
- 单继承与多继承
- 虚函数与纯虚函数
- 抽象类与接口设计
- 多态的实现(动态绑定)
-
模板与泛型编程
- 函数模板与类模板
- 模板特化与偏特化
- STL(标准模板库)概述
-
STL(标准模板库)详解
- 容器(vector, list, map, set等)
- 迭代器与算法(sort, find, transform等)
- 适配器(stack, queue, priority_queue)
-
异常处理
- try-catch-throw机制
- 标准异常类与自定义异常
- 异常安全与RAII原则
第四阶段:高级主题
-
智能指针与内存管理
unique_ptr,shared_ptr,weak_ptr- 循环引用与内存泄漏防范
-
并发编程(多线程)
std::thread与线程同步- 互斥锁(mutex)与条件变量
- 原子操作与无锁编程简介
-
C++11/14/17/20新特性
- Lambda表达式
- 自动类型推导(auto/decltype)
- 移动语义与完美转发
- 协程(C++20)与概念(Concepts)
-
文件操作与序列化
- 文件流(ifstream/ofstream)
- JSON/XML数据解析(第三方库如nlohmann/json)
第五阶段:实战与项目
-
项目实战案例
- 控制台应用程序(如学生管理系统)
- 图形界面开发(结合Qt框架)
- 网络编程(Socket基础)
- 游戏开发(如使用SFML库)
-
调试与优化技巧
- 调试工具(GDB, Valgrind)
- 性能分析与优化策略
- 代码规范与最佳实践
Qt 提供了丰富的控件(Widgets)用于构建桌面应用程序的图形界面,掌握常用控件是开发高效、用户友好界面的基础。以下是 Qt 中必须掌握的常用控件,按功能分类并附上核心用法示例:
一、基础布局控件
1. 容器类控件
-
QWidget- 所有控件的基类,可作为容器嵌套其他控件。
- 示例:
QWidget *container = new QWidget; container->setFixedSize(400, 300); // 设置固定大小
-
QMainWindow- 主窗口框架,自带菜单栏、工具栏、状态栏。
- 示例:
QMainWindow *window = new QMainWindow; window->setCentralWidget(new QLabel("Central Widget"));
-
QDialog- 模态/非模态对话框基类。
- 示例:
QDialog dialog; dialog.setWindowTitle("Dialog"); dialog.exec(); // 模态显示
2. 布局管理器
-
QHBoxLayout/QVBoxLayout- 水平/垂直线性布局。
- 示例:
QWidget *widget = new QWidget; QHBoxLayout *layout = new QHBoxLayout(widget); layout->addWidget(new QPushButton("Left")); layout->addWidget(new QPushButton("Right"));
-
QGridLayout- 网格布局,适合复杂界面。
- 示例:
QGridLayout *grid = new QGridLayout; grid->addWidget(new QLabel("Name:"), 0, 0); grid->addWidget(new QLineEdit, 0, 1);
二、输入与显示控件
1. 文本相关
-
QLabel- 显示文本或图片。
- 示例:
QLabel *label = new QLabel("<b>Bold Text</b>"); label->setPixmap(QPixmap(":/icon.png")); // 显示图片
-
QLineEdit- 单行文本输入框。
- 示例:
QLineEdit *edit = new QLineEdit; edit->setPlaceholderText("Enter name..."); // 占位提示 edit->setEchoMode(QLineEdit::Password); // 密码模式
-
QTextEdit- 多行文本编辑器,支持富文本。
- 示例:
QTextEdit *textEdit = new QTextEdit; textEdit->setPlainText("Plain text"); textEdit->setHtml("<font color='red'>HTML</font>");
2. 按钮类
-
QPushButton- 普通按钮,触发动作。
- 示例:
QPushButton *btn = new QPushButton("Click Me"); QObject::connect(btn, &QPushButton::clicked, [](){ qDebug() << "Button clicked!"; });
-
QCheckBox- 复选框,多选一或独立选择。
- 示例:
QCheckBox *checkBox = new QCheckBox("Enable Feature"); checkBox->setChecked(true); // 默认选中
-
QRadioButton- 单选按钮,通常与
QButtonGroup配合使用。 - 示例:
QButtonGroup *group = new QButtonGroup; QRadioButton *radio1 = new QRadioButton("Option 1"); QRadioButton *radio2 = new QRadioButton("Option 2"); group->addButton(radio1); group->addButton(radio2);
- 单选按钮,通常与
3. 选择类
-
QComboBox- 下拉选择框。
- 示例:
QComboBox *combo = new QComboBox; combo->addItem("Option 1"); combo->addItem("Option 2"); combo->setCurrentIndex(0); // 默认选择第一项
-
QSpinBox/QDoubleSpinBox- 数字输入框,支持步长调整。
- 示例:
QSpinBox *spinBox = new QSpinBox; spinBox->setRange(0, 100); // 范围0-100 spinBox->setSingleStep(5); // 步长5
-
QSlider- 滑动条,用于连续值选择。
- 示例:
QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(0, 100); slider->setValue(50); // 默认值
三、列表与表格控件
1. 列表类
-
QListWidget- 简单列表,支持图标和文本。
- 示例:
QListWidget *list = new QListWidget; QListWidgetItem *item1 = new QListWidgetItem("Item 1"); item1->setIcon(QIcon(":/icon.png")); list->addItem(item1);
-
QTreeView- 树形结构列表,配合
QFileSystemModel显示文件系统。 - 示例:
QFileSystemModel *model = new QFileSystemModel; model->setRootPath(QDir::homePath()); QTreeView *tree = new QTreeView; tree->setModel(model);
- 树形结构列表,配合
2. 表格类
-
QTableWidget- 简单表格,适合少量数据。
- 示例:
QTableWidget *table = new QTableWidget(3, 2); // 3行2列 table->setHorizontalHeaderLabels({"Name", "Age"}); table->setItem(0, 0, new QTableWidgetItem("Alice"));
-
QTableView+QStandardItemModel- 模型/视图架构,适合大数据量。
- 示例:
QStandardItemModel *model = new QStandardItemModel(3, 2); model->setHorizontalHeaderLabels({"Column 1", "Column 2"}); model->setItem(0, 0, new QStandardItem("Data")); QTableView *view = new QTableView; view->setModel(model);
四、高级控件
1. 日期与时间
QDateEdit/QTimeEdit/QDateTimeEdit- 日期和时间选择器。
- 示例:
QDateTimeEdit *edit = new QDateTimeEdit; edit->setDateTime(QDateTime::currentDateTime());
2. 进度与状态
-
QProgressBar- 显示任务进度。
- 示例:
QProgressBar *bar = new QProgressBar; bar->setRange(0, 100); bar->setValue(30); // 当前进度30%
-
QLabel+ 动画- 结合
QMovie显示动态图片(如加载动画)。 - 示例:
QMovie *movie = new QMovie(":/loading.gif"); QLabel *label = new QLabel; label->setMovie(movie); movie->start();
- 结合
3. 自定义绘图
QPainter+QWidget- 在自定义控件上绘制图形。
- 示例:
class DrawingWidget : public QWidget { protected: void paintEvent(QPaintEvent *) override { QPainter painter(this); painter.drawEllipse(rect().adjusted(10, 10, -10, -10)); } };
更多推荐

所有评论(0)