02什么是变量

第一阶段:基础入门
  1. 安装vs2022
  2. 什么是变量(c++)
  3. int和doublue-从而了解变量在计算机存储是长什么样的
  4. 什么是ASCII编码-从而了解变量在计算机存储是长什么样的
  5. 什么是地址
  6. 什么是指针
  7. if-for-while-switch
  8. 什么是数组-相同的数据类型组合在一起表示就是数组
  9. 什么是结构体struct-不同的数据类型组合在一起就是结构体(类)
  10. 什么是函数

  1. 函数方法是怎么存储的
  2. 内存的代码段(Text Segment)、数据段(Data Segment)、BSS 段、堆(Heap)、栈(Stack)
  3. 变量的作用范围
  4. 什么是引用
  5. 什么是类型转换
  6. c++的编译流程

  1. 什么是类和访问修饰符,与结构体的区别
  2. 什么是头文件.h
  3. 什么是宏#define
  4. c++调用自己写的dll
  5. vs2022:C++安装opencv
  6. 什么是泛型编程

  1. C#调用C++的动态链接库
  2. vs2022使用Qt

  1. C++简介与环境搭建

  2. C++的历史与特点

  3. 开发工具安装(如GCC、Visual Studio、CLion等)

  4. 第一个C++程序:Hello World

  5. 代码编译与运行流程

  6. 基础语法与数据类型

  7. 变量、常量与命名规则

  8. 基本数据类型(int, float, char, bool等)

  9. 运算符与表达式

  10. 类型转换(隐式与显式)

  11. 流程控制

  12. 条件语句(if-else, switch-case)

  13. 循环结构(for, while, do-while)

  14. 跳转语句(break, continue, goto)

  15. 函数与作用域

  16. 函数的定义与调用

  17. 参数传递(值传递、引用传递)

  18. 函数重载与默认参数

  19. 变量作用域与生命周期

第二阶段:核心特性
  1. 数组与字符串

    • 静态数组与动态数组(指针操作)
    • C风格字符串与C++ std::string
    • 多维数组与字符串处理函数
  2. 指针与引用

    • 指针的基本概念与操作
    • 指针与数组的关系
    • 动态内存分配(new/delete)
    • 引用与右值引用(C++11)
  3. 结构体与枚举

    • 自定义数据类型(struct)
    • 枚举类型(enum)与枚举类(enum class)
    • 联合体(union)简介
  4. 面向对象编程(OOP)

    • 类与对象的概念
    • 构造函数与析构函数
    • 访问控制(public/private/protected)
    • 静态成员与友元函数
    • this指针与运算符重载
第三阶段:进阶特性
  1. 继承与多态

    • 单继承与多继承
    • 虚函数与纯虚函数
    • 抽象类与接口设计
    • 多态的实现(动态绑定)
  2. 模板与泛型编程

    • 函数模板与类模板
    • 模板特化与偏特化
    • STL(标准模板库)概述
  3. STL(标准模板库)详解

    • 容器(vector, list, map, set等)
    • 迭代器与算法(sort, find, transform等)
    • 适配器(stack, queue, priority_queue)
  4. 异常处理

    • try-catch-throw机制
    • 标准异常类与自定义异常
    • 异常安全与RAII原则
第四阶段:高级主题
  1. 智能指针与内存管理

    • unique_ptr, shared_ptr, weak_ptr
    • 循环引用与内存泄漏防范
  2. 并发编程(多线程)

    • std::thread与线程同步
    • 互斥锁(mutex)与条件变量
    • 原子操作与无锁编程简介
  3. C++11/14/17/20新特性

    • Lambda表达式
    • 自动类型推导(auto/decltype)
    • 移动语义与完美转发
    • 协程(C++20)与概念(Concepts)
  4. 文件操作与序列化

    • 文件流(ifstream/ofstream)
    • JSON/XML数据解析(第三方库如nlohmann/json)
第五阶段:实战与项目
  1. 项目实战案例

    • 控制台应用程序(如学生管理系统)
    • 图形界面开发(结合Qt框架)
    • 网络编程(Socket基础)
    • 游戏开发(如使用SFML库)
  2. 调试与优化技巧

    • 调试工具(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));
          }
      };
      

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐