图书目录

目录

第 1章搭建 PySide开发环境 ···· 1 

1.1配置 Python ·· 1 

1.2配置 Visual Studio Code · 2 

1.2.1  Windows · 2 

1.2.2  Linux· 2 

1.2.3  macOS····· 2 

1.2.4  VS Code配置用户数据目录  3 

1.2.5  安装 Python扩展 3 

1.3创建 Python虚拟环境(可选)  3 

1.4安装 PySide6库 · 4 

1.5在 VS Code中选择 Python解析器·· 4 

1.6验证开发环境是否搭建成功 ····· 5 

第 2章 Qt基础对象 ·· 6 

2.1  QObject类与 Qt对象模型 ··· 6 

2.2建立对象的层级关系 ····· 6 

2.3事件与 event方法 ···· 7 

2.3.1  接受与忽略事件 · 9 

2.3.2  sendEvent与 postEvent  10 

2.3.3  自定义事件 · 12 

2.3.4  事件过滤器 · 14 

2.4信号与槽 ···· 16 

2.4.1  一个信号连接多个槽 ··· 17 

2.4.2  带参数的信号 ··· 18 

2.4.3  使用 C++成员方法的签名格式 ····· 19 

2.4.4  信号的类型重载 ····· 20 

2.4.5  让信号与槽自动建立连接 · 21 

2.4.6  示例:随机变换窗口的背景颜色 ·· 22 

2.4.7  信号阻绝器 · 24 

2.5字节序列—— QByteArray · 26 

2.5.1  替换字符串 · 27 

2.5.2  数值到字符串的转换 ··· 28 

2.5.3  字符串到数值的转换 ··· 28 

2.5.4  

重复字符串 · 29 

2.5.5  

数据截取 ···· 29 

2.5.6  

切片  30 

2.5.7  

Base64字符串·· 31 

2.5.8  

拆分字符串 · 32 

2.5.9  

频数统计 ···· 32 

2.6  QBuffer · 32 

2.6.1  

基本的读写操作 ····· 32 

2.6.2  

使用已有的 QByteArray对象·· 34 

2.6.3  

设置读写位置 ··· 34 

2.7位序列—— QBitArray·· 35 

2.7.1  

设置和清除二进制位 ··· 35 

2.7.2  

频数统计 ···· 36 

2.8  QSysInfo ····· 36 

2.9

  Qt的动态属性 ·· 37 

2.10生成随机数 

····· 38 

2.

10.1设置随机数的种子 ··· 38 

2.

10.2使用内置的 QRandomGenerator实例 ··· 40 

2.

10.3指定随机数的范围 ··· 40 

第 3章 Qt应用程序  42 

3.

1三个应用程序类 ····· 42 

3.

2示例:控制台应用程序 ····· 43 

3.3命令行参数 

 44 

3.3.1  

示例:分析位置参数 ··· 45 

3.3.2  

添加选项参数 ··· 46 

3.3.3  

示例:分析选项参数 ··· 47 

3.3.4  

帮助信息和版本信息 ··· 48 

3.3.5  

示例:显示帮助信息 ··· 48 

3.3.6  

parse方法与 process方法·· 50 

3.3.7  

示例:通过命令行参数运行其他应用程序 ···· 50 

3.3.8  

示例:根据命令行参数设定窗口的呈现方式  52 

3.

4图形化应用程序 ····· 53

第 4章 QWindow···· 55 

4.1关于 

QWindow类 ·· 55 

4.1.1  

一个简单的窗口 ····· 55 

4.1.2  

窗口标题 ···· 56 

4.1.3  

设置窗口的位置和大小 ····· 56 

4.1.4  

示例:设置窗口的位置和大小 ····· 57 

4.1.5  

示例:处理窗口的 Resize事件····· 57 

4.2绘制窗口内容 

··· 58 

4.2.1  QBackingStore ·· 59 

4.2.2  示例:绘制三角形 · 60 

目录 V 

4.2.3  QFont ···· 62 

4.2.4  示例:在窗口上绘制文本 · 62 

4.3  QRasterWindow 63 

4.4鼠标事件 

···· 64 

4.4.1  QMouseEvent···· 64 

4.4.2  

示例:实时记录鼠标指针的位置 ·· 64 

4.4.3  

示例:处理鼠标按键事件 · 66 

4.5键盘事件 

···· 66 

4.5.1  

示例:绘制键盘输入的字符 ··· 67 

4.5.2  

示例:通过方向键移动窗口 ··· 68 

4.6嵌套窗口 

···· 69 

4.6.1  

示例:父子窗口 ····· 69 

4.6.2  

示例:按钮 · 70 

第 5章窗口组件 ····· 74 

5.1

  QWidget类· 74 

5.1.1  

示例: QWidget类的简单用法  74 

5.1.2  

示例:父子窗口 ····· 75 

5.

2窗口的显示方式 ····· 77 

5.3拖放操作 

···· 78 

5.3.1  

QMimeData类·· 78 

5.3.2  

QDrag类····· 79 

5.3.3

  DropAction枚举····· 79 

5.3.4  

示例:拖放数据到其他程序 ··· 80 

5.3.5  

拖放事件 ···· 82 

5.3.6  QDropEvent  82 

5.3.7  QDragMoveEvent ··· 82 

5.3.8  QDragEnterEvent···· 83 

5.3.9  QDragLeaveEvent··· 83 

5.

3.10拖放事件的传递 ··· 83 

5.

3.11示例:通过拖放打开图像文件 ···· 83 

5.

3.12示例:拖放取色器 ····· 85 

5.4剪贴板 

·· 87 

5.4.1  

示例:复制与粘贴文本内容 ··· 88 

5.4.2  

示例:监视剪贴板的数据变化 ····· 89 

5.4.3  

示例:复制和粘贴自定义数据 ····· 90 

5.

5调整窗口的透明度 · 92 

5.6调色板 

·· 93 

5.6.1  

示例:切换颜色主题 ··· 94 

5.6.2  

示例:带纹理的背景画刷 · 96 

6.

1常用的按钮组件 ····· 98 

第 6章按钮 · 98 

6.2  QPushButton···100 

6.2.1  

示例:将多个按钮的 clicked信号绑定到同一个方法 ··· 100 

6.2.2  

示例:按钮的“开关”状态 · 101 

6.2.3  

重复按钮 ·· 101 

6.2.4  

示例:使用重复按钮调整矩形的宽度 ···· 102 

6.2.5  

示例:带下拉菜单的按钮 ····· 103 

6.3  QCheckBox····· 104 

6.3.1  

示例:请选择你喜欢的早餐 · 105 

6.3.2  

示例:让 QCheckBox对象之间相互排斥 ···· 106 

6.4  QRadioButton · 107 

6.4.1  

示例:使用 QGroupBox为 QRadioButton列表分组 ····· 107 

6.4.2  

示例:使用 QButtonGroup类为 QRadioButton分组 ····· 108 

6.5按钮分组 

·· 109 

6.5.1  

示例:修改矩形的颜色 ··· 110 

6.5.2  

示例:调整 QLabel组件的字体大小  111 

6.

6在按钮上显示图标 ····· 113 

6.6.1  

示例:带图标的按钮 · 114 

6.6.2  

示例:为“禁用”状态自定义图标 ·· 115 

6.6.3  

示例: QPushButton的“开关”图标 ····· 116 

6.6.4  

示例:手动绘制图标 · 117 

6.7按钮与快捷键 

· 118 

第 7章布局 ····· 120 

7.1布局管理 

·· 120 

7.2“盒子”模型 

··120 

7.2.1  

示例: QBoxLayout的基本用法 ·· 120 

7.2.2  

两个便捷类型 · 122 

7.2.3  

拉伸比例 ·· 123 

7.2.4  

示例:如何避免子项空间被拉伸  124 

7.3网格布局 

·· 125 

7.3.1  

示例:三行三列的网格布局 · 125 

7.3.2  

跨行/跨列布局 126 

7.3.3  

示例:跨列布局 ··· 127 

7.3.4  

示例:调整行 /列的拉伸比例  127 

7.

4组件的缩放策略 ··· 129 

7.4.1  

修改缩放策略 · 130 

7.4.2  

示例:调整按钮的缩放策略 · 131 

7.5表单布局 

·· 131 

7.5.1  

addRow方法 ·· 132 

7.5.2  

示例:填写收件人信息 ··· 132 

7.6  QStackedLayout····134 

7.6.1  

示例:使用方向按键切换 QStackedLayout中的组件···· 134 

7.6.2  

示例:使用 QStackedWidget组件····· 136 

目录 VII

第 8章输入组件 ··· 138 

8.1  QLineEdit · 138 

8.1.1  

setText方法和 insert方法的区别  139 

8.1.2  

示例:对比 setText方法和 insert方法 ··· 139 

8.1.3  

示例:限制昀大字符数 ··· 139 

8.1.4  

输入掩码 ·· 140 

8.1.5  

示例:日期输入掩码 · 141 

8.1.6  

自动完成 ·· 142 

8.1.7  

示例:自动完成的简单应用 · 142 

8.1.8  CompletionMode··· 143 

8.2  QTextEdit·· 145 

8.2.1  

示例:设置文本的颜色 ··· 145 

8.2.2  

示例:显示 HTML内容·· 146 

8.2.3  

示例:通过 HTML呈现图像  148 

8.2.4  

示例:显示 Markdown内容·· 149 

8.2.5  

示例:自定义上下文菜单 ····· 150 

8.3数值输入组件 

· 151 

8.3.1  

示例: QSpinBox与 QDoubleSpinBox的使用 ···· 152 

8.3.2  

示例:设置数值的有效范围 · 153 

8.3.3  

示例:改变按钮符号 · 154 

8.3.4  

示例:“回旋”数值 · 155 

8.3.5  

前缀与后缀 ····· 155 

8.3.6  

步长值  156 

8.3.7  

QDoubleSpinBox组件的精度 156 

8.4日期和时间 

···· 157 

8.4.1  

示例:获取 QDateTimeEdit中输入的值 · 157 

8.4.2  

示例:使用日历组件 · 159 

8.4.3  

独立使用 QCalendarWidget ··· 160 

第 9章容器组件 ··· 161 

9.1将 

QWidget组件作为容器 ····· 161 

9.

2示例:自定义容器 ····· 162 

9.3  QFrame ····· 163 

9.3.1  

边框形状 ·· 163 

9.3.2  

阴影效果 ·· 164 

9.3.3  

示例: Box与 Panel形状的区别 · 164 

9.3.4  

示例:“凸起”和“凹陷”阴影的区别 · 165 

9.3.5  

中线( mid-line) ·· 166 

9.3.6  

setFrameStyle方法 ····· 166 

9.4  QTabWidget ···· 167 

9.4.1  

示例:动态添加页面 · 167 

9.4.2  

示例:设置标签栏的位置 ····· 168 

9.4.3  

示例:带图标的标签 · 169 

9.4.4  

使用快捷键 ····· 170 

9.5  QGroupBox····· 170 

9.5.1  

示例: QGroupBox的基础用法··· 170 

9.5.2  

示例:设置标题的对齐方式 · 171 

9.5.3  

示例:启用分组框的 Check功能 ····· 172 

9.6  QScrollArea ···· 173 

9.6.1  

示例:在 QScrollArea中承载自定义组件···· 173 

9.6.2  

示例:设置内容组件的对齐方式  175 

9.6.3  

示例:拉伸图像 ··· 177 

9.7  QToolBox·· 178 

9.7.1  

示例:带图标的工具箱条目 · 178 

9.7.2  

示例:处理 currentChanged信号  180 

第 10章菜单栏、工具栏与状态栏 ···· 181 

10.1  QMenu ···· 181 

10.1.1  

示例:两种添加 QAction的方案 ·· 181 

10.1.2  

示例:处理 QMenu的 triggered信号 · 182 

10.1.3  

示例: exec方法和 popup方法的区别  184 

10.2  

菜单栏 ···· 184 

10.2.1  

示例:向菜单栏添加菜单 · 185 

10.2.2  

示例:在布局中使用菜单栏 ··· 185 

10.2.3  

示例:子菜单 ··· 186 

10.2.4  

示例:添加带图标的菜单 · 187 

10.2.5  

带 check标记的菜单 ···· 188 

10.3  

工具栏 ···· 189 

10.3.1  

图标大小与样式 ····· 189 

10.3.2  

示例:工具栏的基础用法 · 189 

10.3.3  

示例:在 QMainWindow中使用工具栏 ··· 190 

10.4  

contextMenu事件····· 191 

10.4.1  

QContextMenuEvent类  191 

10.4.2  

示例:用上下文菜单改变窗口颜色 ···· 192 

10.5  

状态栏 ···· 193 

10.5.1  

addWidget与 addPermanentWidget方法 ··· 193 

10.5.2  

示例:状态栏实时显示窗口的大小 ···· 194 

10.5.3  

示例:在 QMainWindow中使用状态栏 ··· 195 

10.6  

快捷键 ···· 196 

10.6.1  

示例:使用快捷键 · 196 

10.6.2  

标准快捷键 · 198 

10.7  QWidgetAction ··· 199 

10.7.1  

示例:在菜单中显示滑动条组件 ·· 199 

10.7.2  

示例:在上下文菜单中使用自定义组件 ·· 200 

目录 IX

第 11章主窗口 ····· 203 

11.1  QMainWindow····203 

11.1.1  

示例:设置主窗口的内容组件  203 

11.1.2  

示例:构建较复杂的主窗口 ···· 204 

11.1.3  

示例:在运行阶段添加或删除工具栏  206 

11.2  QDockWidget 207 

11.2.1  DockWidgetArea ····· 208 

11.2.2  

示例:简单的 Dock窗口··· 208 

11.2.3  

allowedAreas属性 ·· 210 

11.2.4  

示例: QDockWidget与菜单栏 210 

11.3 MDI··· 211 

11.3.1  

添加子窗口 · 212 

11.3.2  

示例:简单的 MDI应用程序·· 212 

11.3.3  

示例:打开多个文本文件 ·· 214 

11.3.4  

示例:排列子窗口 · 216 

11.3.5  

示例:标签页视图 · 218 

第 12章交互组件 · 220 

12.1  

进度条 ···· 220 

12.1.1  

示例:水平和垂直进度条 · 220 

12.1.2  

示例:模拟耗时任务 ··· 221 

12.1.3  

示例:设置进度文本的格式 ··· 223 

12.2  

滑动条 ···· 224 

12.2.1  

示例:处理 valueChanged信号····· 225 

12.2.2  

示例:设置刻度的显示位置 ··· 225 

12.2.3  

步长  227 

12.2.4  

示例:设置 QSlider组件的步长 ··· 227 

12.3  

仪表盘 ···· 229 

12.3.1  

示例:使用 QDial组件 ····· 229 

12.3.2  

示例:显示刻度线 · 230 

12.3.3  

wrapping属性··· 231 

12.4  QLCDNumber····· 232 

12.4.1  

示例:显示整数和浮点数 · 232 

12.4.2  

示例:切换进制 ····· 233 

12.5  

托盘图标  234 

12.5.1  

示例:显示和隐藏托盘图标 ··· 234 

12.5.2  

示例:添加上下文件菜单 · 235 

12.5.3  

示例:发送“气球”消息 · 235 

12.6  

工具提示  237 

12.6.1  

示例:使用 setToolTip方法 ···· 237 

12.6.2  

示例:拦截 ToolTip事件··· 237 

12.6.3  

示例:在工具提示中使用 HTML · 239 

12.6.4  

示例:修改调色板 · 240 

第 13章对话框 ····· 242 

13.1  QDialog··· 242 

13.1.1  

示例:实现自定义对话框 · 242 

13.1.2  

示例:异步对话框 · 244 

13.2  QInputDialog  245 

13.2.1  

示例: QInputDialog的基本用法 ·· 246 

13.2.2  

QInputDialog的信号 ···· 248 

13.2.3  

示例:实时显示输入内容 · 248 

13.2.4  

示例:使用下拉列表框完成文本输入  250 

13.2.5  

便捷方法 ····· 251 

13.2.6  

示例:使用便捷方法打开输入对话框  252 

13.3  QColorDialog 253 

13.3.1  

示例:设置文本颜色 ··· 253 

13.3.2  

自定义颜色区域 ····· 254 

13.3.3  

示例:使用便捷方法 ··· 255 

13.4  QFileDialog··· 256 

13.4.1  

示例:切换文件选择模式 · 256 

13.4.2  

示例:选择目录 ····· 258 

13.4.3  

便捷方法 ····· 258 

13.5  QFontDialog · 261 

13.5.1  

示例:使用新增的 open方法·· 261 

13.5.2  

示例:使用便捷方法 ··· 262 

13.6  QDialogButtonBox ··· 263 

13.6.1  

按钮角色 ····· 263 

13.6.2  

示例:使用按钮角色 ··· 264 

13.6.3  

标准按钮 ····· 265 

13.6.4  

示例:展示所有标准按钮 · 266 

13.6.5  

示例:标准按钮与 clicked信号 ···· 267 

13.6.6  

示例:用户注册对话框 ····· 268 

13.7  QWizard··270 

13.7.1  

示例:创建简单的向导对话框  271 

13.7.2  

WizardButton枚举·· 272 

13.7.3  

示例:设置按钮的文本 ····· 272 

13.7.4  

示例:重写 nextId方法 ····· 273 

13.7.5  

示例:共享页面数据 ··· 274 

13.7.6  

向导风格与图标 ····· 276 

13.7.7  

示例:为向导设置图标 ····· 277 

13.7.8  

示例:使用自定义按钮 ····· 278 

13.8  无按钮对话框 ····· 279 

13.9  QMessageBox ····· 283 

13.9.1  

示例:使用标准按钮 ··· 283 

13.9.2  

示例:使用标准图标 ··· 284 

13.9.3  

静态成员 ····· 286 

13.9.4  

示例:使用静态方法 ··· 287 

第 14章列表模型与视图 ·· 289 

14.1  模型的抽象基类 · 289 

14.1.1  ItemDataRole ···· 290 

14.1.2  

示例:整数列表模型 ··· 290 

14.1.3  

推荐的基础模型 ····· 292 

14.1.4  

示例:学生表 ··· 292 

14.1.5  

示例:突出显示销量高于平均值的行  294 

14.2  QStringListModel ····· 296 

14.3  QStandardItemModel  297 

14.3.1  

示例:员工信息表 · 297 

14.3.2  

示例:显示图标 ····· 299 

14.3.3  

示例:树形视图 ····· 300 

14.3.4  

示例:多列树形视图 ··· 301 

14.4  QFileSystemModel ··· 303 

14.4.1  

示例:显示目录和文件 ····· 303 

14.4.2  

示例:使用过滤器 · 304 

14.4.3  

示例:创建和删除目录 ····· 305 

14.5  编辑功能  306 

14.5.1  

示例:可编辑列表 · 307 

14.5.2  

插入和删除数据 ····· 309 

14.5.3  

示例:新增 /删除图书信息  310 

14.6  QListWidget··314 

14.6.1  

示例:添加与删除列表项 · 315 

14.6.2  

示例:排序 · 316 

14.7  QTableWidget ····· 318 

14.7.1  

示例:订单表 ··· 318 

14.7.2  

示例:身高信息表 · 319 

14.8  QTreeWidget·320 

第 15章目录与文件 ··· 322 

15.1  QDir··322 

15.1.1  

示例: QDir类的基本用法  322 

15.1.2  

示例:复制和移动目录 ····· 323 

15.1.3  

枚举目录和文件 ····· 325 

15.1.4  

示例:列出动态链接库文件并按大小排序 ···· 326 

15.1.5  

示例:创建和删除目录 ····· 327 

15.2  QFile · 328 

15.2.1  

示例:追加文件内容 ··· 329 

15.2.2  

示例:读写文本文件 ··· 330 

15.2.3  

示例:创建符号链接 ··· 332 

15.3  QSaveFile 332 

15.4  QBuffer ··· 333 

15.5  QTextStream · 334 

15.5.1  

示例: QTextStream类的简单使用  334 

15.5.2  

示例:字段宽度与对齐方式 ··· 334 

15.5.3  

示例:写入不同进制的整数 ··· 335 

15.6  QDataStream·336 

15.6.1  

示例:简单的读写操作 ····· 336 

15.6.2  

示例:保存和恢复调色板数据  337 

第 16章动画 ··· 340 

16.

1与动画有关的类型 ··· 340 

16.2  

基于属性的动画 · 340 

16.2.1  

示例:简单的位移动画 ····· 341 

16.2.2  

示例: stateChanged信号··· 342 

16.3  

自定义属性 ··· 344 

16.4  

关键帧动画 ··· 347 

16.5  

动画分组  348 

16.5.1  

示例:按顺序运行的动画分组  348 

16.5.2  

示例:并行的动画分组 ····· 349 

第 17章 Qt样式表  351 

17.1  

Qt样式表概述 ···· 351 

17.1.1  

基本格式 ····· 351 

17.1.2  

示例:如何设置样式表 ····· 353 

17.1.3  

示例:样式的继承和覆盖 · 354 

17.1.4  

示例:从文件加载 QSS····· 355 

17.2  

盒子模型  356 

17.2.1  

示例:设置按钮的外边距 · 357 

17.2.2  

示例:设置 QListWidget对象的内边距 ··· 358 

17.2.3  

边框  359 

17.2.4  

示例:为 QLabel组件设置边框样式·· 360 

17.2.5  

圆角边框 ····· 362 

17.2.6  

示例:带圆角边框的按钮 · 362 

17.3  

颜色 ·· 363 

17.3.1  

示例:设置 QLabel组件的文本颜色 ·· 364 

17.3.2  

示例:设置 QWidget的背景颜色 · 365 

17.4  

渐变画刷  366 

17.4.1  

线性渐变 ····· 366 

17.4.2  

示例:使用线性渐变颜色填充背景 ···· 367 

17.4.3  

径向渐变 ····· 368 

17.4.4  

示例:移动径向渐变的圆心位置 ·· 369 

17.4.5  

示例:移动径向渐变的焦点位置 ·· 370 

17.4.6  

锥形渐变 ····· 371 

17.4.7  

示例:使用锥形渐变填充 QFrame组件 ··· 372 

17.4.8  

渐变区域的延展方案 ··· 373 

17.4.9  

示例:在径向渐变中使用 spread参数 ····· 375 

17.5  

字体 ·· 376 

17.5.1  

示例:设置 QLabel和 PushButton组件的字体 ···· 377 

17.5.2  

示例:为 QTableWidget设置字体  378 

17.5.3  

示例:转换大小写 · 379 

17.6  

伪状态 ···· 381 

17.6.1  

示例:自定义 QPushButton的样式 ···· 382 

17.6.2  

示例: QRadioButton被选择后的样式  384 

17.6.3  

示例:自定义列表项的外观 ··· 384 

17.7  

子控件 ···· 385 

17.7.1  

示例:使用渐变画刷填充被选中的列表项 ···· 386 

17.7.2  

示例:自定义 QCheckBox的状态指示图标 ·· 387 

17.7.3  

示例:设置 QTableWidget的表头样式 ····· 388 

第 18章多线程 ····· 390 

18.1  

单线程与多线程的比较 · 390 

18.2  

QThread类 ··· 390 

18.2.1  

示例:随机变换颜色 ··· 391 

18.2.2  

示例:使用 moveToThread方法 ··· 393 

18.3  QThreadPool · 395 

18.3.1  QRunnable ·· 395 

18.3.2  示例:向 QThreadPool投放 3个任务  395 

18.4  互斥锁 ···· 398 

18.4.1  

示例:将 QMutex用于多线程运算 ···· 399 

18.4.2  

示例:使用 QMutexLocker类· 401 

18.5  QWaitCondition ·· 402 

18.5.1  

示例:多阶段任务 · 403 

18.5.2  

示例:等待键盘输入 ··· 404 

第 19章 QML基础····· 406 

19.1  

QML与 QtQuick  406 

19.2  

QML文档的结构····· 407 

19.2.1  

import语句 · 407 

19.2.2  

对象声明 ····· 408 

19.3  

加载 QML文档·· 409 

19.3.1  QQmlApplicationEngine ····· 409 

19.3.2  示例:使用 QQmlApplicationEngine类加载 QML文件·· 409 

19.3.3  QQuickView 410 

19.3.4  示例:使用 QQuickView类加载 QML文档 ·· 411 

19.4  

QQuickItem类···· 412 

19.5  

布局 ·· 412 

19.5.1  

示例:使用 x、y属性定位矩形···· 412 

19.5.2  

示例: Z顺序 ··· 414 

19.5.3  

示例: Column ·· 415 

19.5.4  

示例: Row · 416 

19.5.5  

示例: Grid · 417 

19.5.6  

示例: RowLayout ·· 418 

19.5.7  

示例:在 GridLayout中定位子对象 ··· 419 

19.6  

控件基类—— Control····· 421 

19.6.1  

示例:处理鼠标单击事件 · 422 

19.6.2  

示例:处理键盘事件 ··· 423 

19.7  

按钮控件  425 

19.7.1  

示例: Button···· 426 

19.7.2  

示例: CheckBox ···· 427 

19.7.3  

示例: RadioButton· 429 

19.7.4  

示例: ButtonGroup  430 

19.8  

输入控件  431 

19.8.1  

示例: TextInput ····· 431 

19.8.2  

示例: TextField 432 

19.8.3  

示例: SpinBox· 433 

19.8.4  

示例: SpinBox中数值与文本的转换 · 434 

19.8.5  

示例: Slider ····· 436 

19.8.6  

示例: RangeSlider · 436 

19.9  

菜单 ·· 438 

19.9.1  

示例:上下文菜单 · 439 

19.9.2  

示例:使用 Action对象 ···· 440 

19.9.3  

示例:菜单栏 ··· 442 

19.9.4  

示例:带图标的菜单项 ····· 443 

19.10工具栏 

·· 444 

19.

11列表控件—— ListView· 447 

19.11.1 ListModel  447 

19.

11.2示例:使用 ListModel类定义简单列表  448 

19.11.3代理

··· 449 

19.11.4 XmlListModel ·····449 

19.12在 

QWidget中呈现 QtQuick对象 · 451