当前位置: 首页 > news >正文

用Ai学习wxWidgets笔记——自制wxWidgets开发参考手册(主体)

声明:本文整理自Ai工具辅助生成的内容,仅供参考
想用wxWidgets开发一个项目,没有参考手册将是寸步难行的,本系列文章借助Ai技术的力量快速制成参考手册,弥补参考资料的不足。

>> wxWidgets 框架概述

wxWidgets 是一个开源的 C++ 跨平台 GUI(图形用户界面)框架,允许开发者使用单一代码库创建可在多个平台上运行的应用程序。

核心特性

  1. 跨平台支持

    • Windows
    • macOS
    • Linux/Unix (GTK+, Motif)
    • 嵌入式系统
  2. 原生外观

    • 使用各平台原生控件,应用程序外观和行为与平台原生应用一致
  3. 编程语言

    • 主要使用 C++
    • 提供其他语言绑定(Python、Perl、Ruby等)

主要组件

  1. 基础类

    • 字符串处理 (wxString)
    • 文件/目录操作 (wxFile, wxDir)
    • 日期时间 (wxDateTime)
  2. GUI 组件

    • 窗口/对话框 (wxWindow, wxDialog)
    • 控件 (wxButton, wxTextCtrl, wxListBox等)
    • 菜单/工具栏 (wxMenu, wxToolBar)
  3. 高级功能

    • 图形绘制 (wxDC, wxGLCanvas)
    • 多线程 (wxThread)
    • 网络功能 (wxSocket)
    • 数据库访问 (wxDatabase)

优势

  1. 开源免费:LGPL 许可证,允许商业使用
  2. 成熟稳定:20多年发展历史
  3. 丰富的文档和示例
  4. 活跃的社区支持

适用场景

  • 需要原生外观的跨平台桌面应用
  • 需要轻量级解决方案的项目
  • 需要最大限度控制UI细节的应用

wxWidgets 是许多知名应用的基础,如 Audacity、Code::Blocks 等。

>> wxWidgets 框架组成

wxWidgets 是一个模块化的框架,由多个核心库和可选组件组成。以下是其主要组成部分:

1. 核心库 (Core Libraries)

基础库

  • wxBase:非GUI基础功能,包括:
    • 字符串处理 (wxString)
    • 基本数据类型和容器类 (wxVector, wxList)
    • 文件/目录操作 (wxFile, wxDir)
    • 日期时间 (wxDateTime)
    • 日志系统 (wxLog)
    • 多线程 (wxThread)
    • 网络基础类
    • 事件系统基础

GUI核心库

  • wxCore:所有GUI类的基础

    • 对象模型 (wxObject)
    • 事件系统 (wxEvtHandler)
    • 窗口系统 (wxWindow)
    • 应用程序框架 (wxApp)
    • 基本控件 (按钮、文本框等)
    • 绘图设备 (wxDC)
  • wxAdv/(wxAdvanced):高级GUI功能

    • wxCalendarCtrl (日历控件)
    • wxDatePickerCtrl (日期选择器)
    • wxTimePickerCtrl (时间选择器)
    • wxHyperlinkCtrl (超链接控件)
    • wxTaskBarIcon (任务栏图标)
    • wxSplashScreen (启动画面)
    • 属性网格 (wxPropertyGrid)
    • 富文本控件 (wxRichTextCtrl)

这个核心库结构使 wxWidgets 能够保持模块化,开发者可以只链接他们需要的部分,减少最终应用程序的大小。

2. 模块化组件

图形相关

  • wxGDI:图形设备接口

    • 绘图上下文 (wxDC)
    • 字体/颜色/画笔管理
    • 图像支持 (wxImage, wxBitmap)
  • wxOpenGL/(wxGL):OpenGL集成

    • wxGLCanvas 类(OpenGL 画布)
    • OpenGL 上下文管理
  • wxPDF:PDF文档生成

    • 文本和图形输出

多媒体

  • wxMedia:多媒体支持

    • 音频/视频播放(wxMediaCtrl)
    • 多种后端支持 (GStreamer, DirectShow 等)
  • wxHTML:轻量级HTML渲染

    • 简单浏览器组件
    • wxHtmlWindow (简单 HTML 渲染)
    • wxHtmlEasyPrinting (HTML 打印支持)
    • 基本 HTML 解析器

网络功能

  • wxNet:网络功能
    • 套接字 (wxSocket)
    • URL处理 (wxURL)
    • HTTP客户端 (wxHTTP)
    • wxProtocol
    • wxWebRequest (3.1.0+版本)

数据库访问

  • wxDatabase/(wxDb):数据库抽象层
    • 支持多种后端 (SQLite, MySQL, ODBC等)

其他功能模块

  • wxXML:XML处理
    • wxXmlDocument
    • wxXmlNode
    • XML 读写支持
  • wxAUI:高级用户界面
    • 可停靠面板
    • 浮动窗口管理
    • 布局持久化
  • wxRibbon:功能区界面
  • wxSTC:Scintilla文本编辑器组件
    • wxStyledTextCtrl (高级文本编辑器控件)
    • 语法高亮支持
  • wxXRC:XML资源系统
    • 从 XML 文件加载 GUI 布局
    • 资源管理
  • wxQA:质量保证
    • 测试支持
    • 调试工具

3. 平台特定实现

wxWidgets 针对不同平台有不同的实现层:

  • wxMSW:Windows 实现
    • ActiveX 支持
    • Windows 特有控件
  • wxGTK:Linux GTK+ 实现
    • GTK+ 特定功能
    • Linux 桌面集成
  • wxOSX/Cocoa:macOS Cocoa 实现
    • Cocoa 特定功能
    • macOS 原生外观
  • wxMotif:Unix Motif 实现
  • wxQt:Qt 后端实现

4. 工具类库

  • wxUtilities

    • 配置管理 (wxConfig)
    • 调试工具
    • 系统信息
  • wxInternationalization

    • 多语言支持 (wxLocale)
    • 字符编码转换

5. 构建系统

  • wxBuild:跨平台构建系统
    • 支持多种编译器 (MSVC, GCC, Clang等)
    • 提供配置工具 (wx-config)

6. 附加组件 (Optional)

  • wxContrib:社区贡献组件
  • wxThirdParty:集成的第三方库

编译选项控制的核心功能

这些功能通常通过编译选项启用:

  • wxUSE_XXX 宏控制的功能
    • wxUSE_STL (STL 集成)
    • wxUSE_UNICODE (Unicode 支持)
    • wxUSE_EXCEPTIONS (异常支持)
    • wxUSE_THREADS (线程支持)

版本说明

  • wxWidgets 3.0 和 3.1 是当前主要支持版本
  • wxWidgets 3.2 正在开发中,包含更多现代功能

这种模块化设计使得开发者可以根据需要选择特定组件,保持应用程序的轻量级,同时又能访问丰富的功能集。

>> wxWidgets 主要类的说明

以下是 wxWidgets 的主要类别的分类概览,涵盖核心模块(如 GUI、基础类、网络、多媒体等)。由于 wxWidgets 类库非常庞大,这里列出的是常用类和部分重要类:


1. 基础类(Core Classes)

  • 根类
    • wxObject - 所有 wxWidgets 类的基类。
    • wxRefCounter - 引用计数基类(用于智能指针)。
  • 运行时类型信息
    • wxClassInfo - 类信息支持 RTTI。
  • 字符串处理
    • wxString - Unicode 字符串类(类似 std::string)。
  • 动态库与反射
    • wxDynamicLibrary - 动态加载库。
  • 调试与日志
    • wxLog - 日志系统基类。
    • wxLogNull - 临时禁用日志。

2. 应用程序框架(Application Framework)

  • 应用管理
    • wxApp - 应用程序基类。
    • wxEvent - 所有事件的基类。
    • wxEvtHandler - 事件处理器基类。
  • 命令行处理
    • wxCmdLineParser - 命令行参数解析。

3. 窗口与控件(Windows and Controls)

  • 顶层窗口
    • wxWindow - 所有窗口控件的基类。
    • wxFrame - 主窗口框架。
    • wxDialog - 对话框基类。
    • wxMDIParentFrame / wxMDIChildFrame - MDI 支持。
  • 基础控件
    • wxButton - 按钮。
    • wxStaticText - 静态文本。
    • wxTextCtrl - 文本框。
    • wxCheckBox / wxRadioButton - 复选框/单选按钮。
    • wxComboBox / wxChoice - 下拉框。
    • wxListBox / wxCheckListBox - 列表框。
    • wxSlider / wxSpinCtrl - 滑动条/数字调节框。
  • 高级控件
    • wxTreeCtrl - 树形控件。
    • wxListCtrl - 列表控件(支持图标、报告模式)。
    • wxNotebook / wxAuiNotebook - 标签页。
    • wxGrid - 表格控件。
    • wxRichTextCtrl - 富文本编辑器。
  • 布局管理
    • wxSizer - 布局管理器基类(如 wxBoxSizer, wxGridSizer)。
    • wxAuiManager - 高级可停靠界面(类似 IDE 布局)。

4. 绘图与图形(Graphics)

  • 设备上下文(DC)
    • wxDC - 绘图设备基类。
    • wxPaintDC - 窗口绘制专用。
    • wxClientDC / wxWindowDC - 非绘制区绘图。
    • wxMemoryDC - 内存绘图。
    • wxBufferedDC - 双缓冲绘图。
  • 图形工具
    • wxPen / wxBrush - 画笔/画刷。
    • wxFont - 字体管理。
    • wxColour - 颜色表示。
  • 高级图形
    • wxGraphicsContext - 矢量图形(支持反锯齿)。
    • wxGLCanvas - OpenGL 支持。

5. 数据操作(Data Handling)

  • 文件与目录
    • wxFile / wxDir - 文件/目录操作。
    • wxFileName - 路径处理。
  • 数据流
    • wxInputStream / wxOutputStream - 流基类。
    • wxFileInputStream / wxMemoryInputStream - 文件/内存流。
  • 配置管理
    • wxConfig - 配置文件(如 INI、注册表)。
  • 数据类型
    • wxVariant - 动态类型数据。
    • wxDateTime - 日期时间处理。

6. 网络(Networking)

  • 基础网络
    • wxSocketBase - 套接字基类。
    • wxIPV4address - IP 地址处理。
  • 协议支持
    • wxHTTP / wxFTP - HTTP/FTP 客户端。
    • wxURL - URL 解析。

7. 多线程(Multithreading)

  • 线程管理
    • wxThread - 线程基类。
    • wxMutex / wxCriticalSection - 同步锁。
    • wxCondition - 线程条件变量。

8. 多媒体(Multimedia)

  • 音视频
    • wxSound - 音频播放。
    • wxMediaCtrl - 媒体播放控件。

9. 国际化(Internationalization)

  • wxLocale - 本地化支持(翻译、语言切换)。
  • wxTranslations - 多语言字符串加载。

10. 其他工具类(Utilities)

  • 调试与断言
    • wxASSERT / wxFAIL - 调试宏。
  • 智能指针
    • wxSharedPtr / wxWeakRef
  • 系统信息
    • wxPlatformInfo - 平台检测。

以下是 wxWidgets 主要类 的分类一览表,涵盖核心 GUI、数据结构、系统交互等模块。wxWidgets 的类非常丰富,这里列出最常用的部分(基于 wxWidgets 3.x 版本):


1. 应用程序框架

类名说明
wxApp应用程序基类,主事件循环
wxEvtHandler事件处理基类
wxWindow所有窗口控件的基类
wxFrame主窗口框架
wxDialog对话框基类
wxPanel面板容器
wxMDIParentFrameMDI(多文档)父窗口
wxMDIChildFrameMDI 子窗口

2. 文档-视图架构

类名说明
wxDocument文档基类(数据存储)
wxView视图基类(数据显示)
wxDocManager文档管理器
wxDocTemplate文档模板(关联文档、视图和窗口)

3. 基础控件

类名说明
wxButton按钮
wxTextCtrl文本框(单行/多行)
wxStaticText静态文本标签
wxCheckBox复选框
wxRadioButton单选按钮
wxComboBox下拉组合框
wxListBox列表框
wxChoice选择框(不可编辑)
wxSlider滑动条
wxGauge进度条
wxSpinCtrl数字微调框

4. 高级控件

类名说明
wxNotebook标签页控件
wxListCtrl高级列表(支持图标、列)
wxTreeCtrl树形控件
wxGrid表格控件
wxRichTextCtrl富文本编辑器
wxStyledTextCtrl代码编辑器(基于 Scintilla)
wxCalendarCtrl日历控件
wxHtmlWindow简单 HTML 渲染器
wxAuiToolBar可拖拽工具栏
wxRibbonBarRibbon 界面

5. 菜单与工具栏

类名说明
wxMenu菜单
wxMenuBar菜单栏
wxToolBar工具栏
wxStatusBar状态栏
wxAcceleratorTable快捷键表

6. 图形与绘图

类名说明
wxDC设备上下文(绘图基类)
wxPaintDC窗口绘图上下文
wxClientDC客户区绘图上下文
wxMemoryDC内存绘图上下文
wxGraphicsContext高级 2D 绘图(抗锯齿/变换)
wxPen画笔(线条样式)
wxBrush画刷(填充样式)
wxFont字体
wxColour颜色
wxBitmap位图
wxImage图像处理(缩放/格式转换)

7. 布局与容器

类名说明
wxBoxSizer盒子布局(水平/垂直)
wxGridSizer网格布局
wxFlexGridSizer弹性网格布局
wxStaticBoxSizer带标题的分组布局
wxSplitterWindow可分割窗口
wxScrolledWindow可滚动窗口
wxAuiManager高级窗口布局管理(停靠/浮动)

8. 文件与系统交互

类名说明
wxFile文件读写
wxDir目录操作
wxFileName文件名处理
wxFileDialog文件选择对话框
wxDirDialog目录选择对话框
wxProcess进程管理
wxThread线程支持
wxRegKey (Windows)注册表操作

9. 数据与序列化

类名说明
wxVariant通用数据类型
wxDataObject数据交换(剪贴板/拖放)
wxConfig配置存储(INI/注册表)
wxJSONJSON 读写
wxXmlDocumentXML 处理

10. 网络与通信

类名说明
wxSocket网络套接字
wxHTTPHTTP 客户端
wxURLURL 处理
wxWebRequest (3.1+)现代网络请求

11. 国际化

类名说明
wxLocale本地化支持
wxTranslations多语言翻译

12. 平台特定类

  • Windows: wxActiveXContainer (ActiveX 控件)
  • Linux: wxGTK 相关类
  • macOS: wxOSX 相关类

完整参考

wxWidgets 的完整类列表可参考官方文档:
👉 wxWidgets Class Reference


总结

  • wxWidgets 的类库覆盖了 GUI 开发 的几乎所有需求。
  • 通过模块化设计,开发者可以按需选择功能(如不链接 wxRichText 以减少体积)。
  • 文档-视图架构 (wxDocument/wxView) 适合复杂应用,而简单程序可直接使用 wxFrame + 控件。

>> wxWidgets 控件一览

以下是 wxWidgets 中可用的主要控件列表:

基础控件

  1. wxButton - 按钮控件
  2. wxBitmapButton - 带位图的按钮
  3. wxToggleButton - 开关按钮
  4. wxCheckBox - 复选框
  5. wxRadioButton - 单选按钮
  6. wxStaticText - 静态文本
  7. wxStaticBitmap - 静态位图
  8. wxStaticBox - 静态框(分组用)
  9. wxTextCtrl - 文本框(单行/多行)
  10. wxComboBox - 组合框(下拉选择+编辑)
  11. wxChoice - 选择框(仅下拉选择)
  12. wxListBox - 列表框
  13. wxCheckListBox - 带复选框的列表框
  14. wxRadioBox - 单选按钮组
  15. wxSlider - 滑动条
  16. wxGauge - 进度条
  17. wxScrollBar - 滚动条
  18. wxSpinButton - 微调按钮
  19. wxSpinCtrl - 微调文本框
  20. wxStaticLine - 静态分隔线

高级控件

  1. wxNotebook - 标签页控件
  2. wxListCtrl - 列表视图控件
  3. wxTreeCtrl - 树形控件
  4. wxRichTextCtrl - 富文本编辑控件
  5. wxGrid - 表格控件
  6. wxCalendarCtrl - 日历控件
  7. wxDatePickerCtrl - 日期选择控件
  8. wxTimePickerCtrl - 时间选择控件
  9. wxHtmlWindow - HTML显示控件
  10. wxSearchCtrl - 搜索框控件
  11. wxPropertyGrid - 属性网格控件
  12. wxDataViewCtrl - 数据视图控件
  13. wxRibbonBar - Ribbon界面控件
  14. wxTaskBarIcon - 任务栏图标控件
  15. wxAuiToolBar - 高级用户界面工具栏

布局控件

  1. wxPanel - 面板容器
  2. wxScrolledWindow - 可滚动窗口
  3. wxSplitterWindow - 分割窗口
  4. wxToolBar - 工具栏
  5. wxStatusBar - 状态栏
  6. wxMenuBar - 菜单栏
  7. wxDialog - 对话框基类
  8. wxFrame - 框架窗口
  9. wxMDIParentFrame - MDI父框架
  10. wxMDIChildFrame - MDI子框架

其他专用控件

  1. wxMediaCtrl - 多媒体控件
  2. wxAnimationCtrl - 动画控件
  3. wxGLCanvas - OpenGL画布
  4. wxDirPickerCtrl - 目录选择控件
  5. wxFilePickerCtrl - 文件选择控件
  6. wxColourPickerCtrl - 颜色选择控件
  7. wxFontPickerCtrl - 字体选择控件
  8. wxInfoBar - 信息提示栏
  9. wxBannerWindow - 横幅窗口
  10. wxCommandLinkButton - 命令链接按钮

通用对话框

虽然不是严格意义上的控件,但 wxWidgets 也提供了许多通用对话框:

  • wxMessageDialog
  • wxFileDialog
  • wxDirDialog
  • wxColourDialog
  • wxFontDialog
  • wxTextEntryDialog
  • wxProgressDialog
  • wxFindReplaceDialog
  • wxPrintDialog

注意:wxWidgets 的可用控件可能因平台和版本而异,某些控件可能只在特定平台上可用或需要特定版本的 wxWidgets。

>> wxWidgets GUI 组件一览

以下是 wxWidgets 主要 GUI 组件 的表格概览,按功能分类列出常用控件及其简要说明:


wxWidgets GUI 组件一览表

类别类名说明
顶层窗口wxFrame主应用程序窗口,支持菜单栏、工具栏、状态栏。
wxDialog模态/非模态对话框基类。
wxMDIParentFrameMDI(多文档界面)父窗口。
wxMDIChildFrameMDI 子窗口。
基础控件wxButton按钮控件,支持点击事件。
wxStaticText静态文本标签(不可编辑)。
wxTextCtrl单行/多行文本框,支持富文本(wxRichTextCtrl)。
wxCheckBox复选框(多选)。
wxRadioButton单选按钮(需配合 wxRadioBox 分组)。
wxComboBox下拉组合框(可编辑+下拉列表)。
wxChoice下拉列表(不可编辑)。
wxListBox列表框(单选/多选)。
wxCheckListBox带复选框的列表框。
wxSlider滑动条控件。
wxSpinCtrl数字调节框(整数)。
wxSpinCtrlDouble支持浮点数的调节框。
高级控件wxTreeCtrl树形结构控件(如文件浏览器)。
wxListCtrl列表控件(支持图标、报告模式,类似资源管理器)。
wxDataViewCtrl更强大的数据绑定列表控件。
wxNotebook标签页控件(多页切换)。
wxAuiNotebook支持拖拽、关闭标签页的高级标签控件。
wxGrid表格控件(支持编辑、排序)。
wxRichTextCtrl富文本编辑控件(支持格式、图片)。
wxCalendarCtrl日历控件。
wxDatePickerCtrl日期选择器。
布局与容器wxPanel通用容器控件,用于分组其他控件。
wxScrolledWindow可滚动的窗口容器。
wxSplitterWindow可拖拽分割的窗口(水平/垂直)。
wxStaticBox带边框和标题的分组框。
wxToolBar工具栏(支持按钮、下拉菜单)。
wxStatusBar状态栏(显示提示信息)。
菜单与工具栏wxMenu菜单项容器(用于 wxMenuBar)。
wxMenuBar主窗口菜单栏。
wxToolBar工具栏(图标按钮)。
图形与绘图wxGLCanvasOpenGL 绘图画布。
wxStaticBitmap静态图片显示控件。
其他专用控件wxHtmlWindow简易 HTML 渲染控件。
wxMediaCtrl多媒体播放控件(视频/音频)。
wxProgressDialog进度条对话框。
wxSearchCtrl搜索输入框(带清除按钮)。
wxTaskBarIcon系统托盘图标控件。

说明

  1. 继承关系:所有控件均继承自 wxWindow,共享基础窗口方法(如 Show(), Enable())。
  2. 平台适配:控件在不同平台(Windows/macOS/GTK)下外观可能不同,但行为一致。
  3. 扩展控件:可通过 wxWidgets 扩展库(如 wxAUIwxRibbon)获取更多高级组件。

更多内容待更新补充
未完待续中……

相关文章:

  • 在油气地震资料积分法偏移成像中,起伏地表处理
  • agent course-2
  • CBC(Clock Boundary Crossing)简介
  • SVTAV1 编码函数 svt_aom_is_pic_skipped
  • Linux -- 操作系统
  • 修改linux账号名
  • TorchRec - PyTorch生态下的推荐系统解决方案 [官方文档翻译]
  • MySQL基础关键_002_DQL
  • 从技术角度看Facebook的隐私保护机制
  • 从AI应用到职业跃迁,AI已成智能时代关键变量
  • Windows 匿名管道通信
  • C++静态编译标准库(libgcc、libstdc++)
  • AE模板 动感节奏快闪图文展示介绍片头 Typographic Intro
  • 深度学习正则化:原理、方法与应用深度解析
  • Pillow 移除或更改了 FreeTypeFont.getsize() 方法
  • AI对IT行业的重塑:挑战与机遇并存的技术革命
  • GD32F407单片机开发入门(十九)DMA详解及ADC-DMA方式采集含源码
  • Android 动态权限申请
  • 毕业论文 | 传统特征点提取算法与匹配算法对比分析
  • 无忧AI综合插件,可实现图色识别、机器视觉、图像编辑等多种功能
  • 韩国检方结束对尹锡悦私宅的扣押搜查
  • 宁波市纪委监委通报4起违反中央八项规定精神典型问题
  • 遭遇大规模停电,西班牙内政部宣布进入国家紧急状态
  • 药明康德一季度净利增长89%,在手订单增超四成至523亿元
  • 幸福航空五一前三天航班取消:客服称目前是锁舱状态,无法确认何时恢复
  • 马上评丨市长信箱“已读乱回”,群众在意的是什么