补充资料.

Signed-off-by: rick.chan <cy187lion@sina.com>
This commit is contained in:
rick.chan 2023-08-13 11:43:45 +08:00
parent 510a9e13db
commit cd5e1c26c2
1 changed files with 39 additions and 26 deletions

View File

@ -19,18 +19,20 @@
- [6.2. 添加图标到应用](#62-添加图标到应用) - [6.2. 添加图标到应用](#62-添加图标到应用)
- [7. 绘制圆形](#7-绘制圆形) - [7. 绘制圆形](#7-绘制圆形)
- [8. 常用组件](#8-常用组件) - [8. 常用组件](#8-常用组件)
- [8.1. QtQuick.Controls.Button](#81-qtquickcontrolsbutton) - [8.1. QtQuick.Loader](#81-qtquickloader)
- [8.2. Dialog 对象](#82-dialog-对象) - [8.2. QtQuick.Controls.Button](#82-qtquickcontrolsbutton)
- [8.2.1. QtQuick.Controls 中的 Dialog](#821-qtquickcontrols-中的-dialog) - [8.3. Dialog 对象](#83-dialog-对象)
- [8.2.2. QtQuick.Dialogs](#822-qtquickdialogs) - [8.3.1. QtQuick.Controls 中的 Dialog](#831-qtquickcontrols-中的-dialog)
- [8.2.2.1. FileDialog](#8221-filedialog) - [8.3.2. QtQuick.Dialogs](#832-qtquickdialogs)
- [8.2.2.2. MessageDialog](#8222-messagedialog) - [8.3.2.1. FileDialog](#8321-filedialog)
- [8.3. ComboBox](#83-combobox) - [8.3.2.2. MessageDialog](#8322-messagedialog)
- [8.4. Grid](#84-grid) - [8.4. ComboBox](#84-combobox)
- [8.5. ScrollView](#85-scrollview) - [8.5. Grid](#85-grid)
- [8.6. GridView](#86-gridview) - [8.6. ScrollView](#86-scrollview)
- [8.7. BusyIndicator](#87-busyindicator) - [8.7. QtQuick.ListView](#87-qtquicklistview)
- [8.8. VirtualKeyboard](#88-virtualkeyboard) - [8.7. GridView](#87-gridview)
- [8.8. BusyIndicator](#88-busyindicator)
- [8.9. VirtualKeyboard](#89-virtualkeyboard)
- [9. 多文档开发](#9-多文档开发) - [9. 多文档开发](#9-多文档开发)
- [9.1. 多 QML 文件的管理](#91-多-qml-文件的管理) - [9.1. 多 QML 文件的管理](#91-多-qml-文件的管理)
- [9.2. 如何引用自定义 QML 文件](#92-如何引用自定义-qml-文件) - [9.2. 如何引用自定义 QML 文件](#92-如何引用自定义-qml-文件)
@ -300,7 +302,12 @@ If you do not use qmake, the necessary steps are: first, create an .rc file and
## 8. 常用组件 ## 8. 常用组件
### 8.1. QtQuick.Controls.Button ### 8.1. QtQuick.Loader
TODO:
TODO: 参考 XiaYu 项目中的 SubMenuGrp 和 SubMenuBtn 对 default 属性和子组件引用父组件方法、属性进行说明。
### 8.2. QtQuick.Controls.Button
```js ```js
Button { Button {
@ -316,13 +323,13 @@ Button {
} }
``` ```
### 8.2. Dialog 对象 ### 8.3. Dialog 对象
QML 中有三大类 Dialog 对象,这里主要介绍 QtQuick.Controls 中的 Dialog 和 QtQuick.Dialogs。 QML 中有三大类 Dialog 对象,这里主要介绍 QtQuick.Controls 中的 Dialog 和 QtQuick.Dialogs。
#### 8.2.1. QtQuick.Controls 中的 Dialog #### 8.3.1. QtQuick.Controls 中的 Dialog
QtQuick.Controls 中的 Dialog 比较原始,需要属性需要自行定义和实现,所以它的自由度也比较高。该 Dialog 包含了页眉Header、页脚Footer和内容Content三部分每个部分都可以单独设定。 QtQuick.Controls 中的 Dialog 比较原始,属性需要自行定义和实现,所以它的自由度也比较高。该 Dialog 包含了页眉Header、页脚Footer和内容Content三部分每个部分都可以单独设定。
- footerItem - footerItem
@ -362,7 +369,7 @@ Dialog {
除 Ok Button 和 Cancel Button 外,还有许多系统预定义的 Standard Button 可自行翻阅 QML 帮助获得相关帮助信息。 除 Ok Button 和 Cancel Button 外,还有许多系统预定义的 Standard Button 可自行翻阅 QML 帮助获得相关帮助信息。
#### 8.2.2. QtQuick.Dialogs #### 8.3.2. QtQuick.Dialogs
在使用 QtQuick.Dialogs 的 Dialog 对象时,如果使用 QGuiApplication 来执行则会导致无法加载主题风格,并且对话框无法正确显示图标。如果最初使用 QGuiApplication 创建了 app则需要进行如下修改 在使用 QtQuick.Dialogs 的 Dialog 对象时,如果使用 QGuiApplication 来执行则会导致无法加载主题风格,并且对话框无法正确显示图标。如果最初使用 QGuiApplication 创建了 app则需要进行如下修改
@ -383,7 +390,7 @@ QApplication app(argc, argv);
Dialog 对象默认不显示,当调用 Dialog 的 open() 方法后弹出窗口并阻塞父窗体的执行。 Dialog 对象默认不显示,当调用 Dialog 的 open() 方法后弹出窗口并阻塞父窗体的执行。
##### 8.2.2.1. FileDialog ##### 8.3.2.1. FileDialog
FileDialog 为标准文件对话框。 FileDialog 为标准文件对话框。
@ -422,7 +429,7 @@ Window {
} }
``` ```
##### 8.2.2.2. MessageDialog ##### 8.3.2.2. MessageDialog
MessageDialog 为标准消息对话框。 MessageDialog 为标准消息对话框。
@ -462,7 +469,7 @@ Window {
} }
``` ```
### 8.3. ComboBox ### 8.4. ComboBox
ComboBox 为标准组合框 ComboBox 为标准组合框
@ -490,7 +497,7 @@ Window {
} }
``` ```
### 8.4. Grid ### 8.5. Grid
布局组件,可以布局多个行和列,每个子成员必须是相同类型,一般使用 Item 来组织多个不同类型。每个子成员必须设置高度和宽度,否则不被显示。 布局组件,可以布局多个行和列,每个子成员必须是相同类型,一般使用 Item 来组织多个不同类型。每个子成员必须设置高度和宽度,否则不被显示。
@ -527,11 +534,17 @@ Grid {
} }
``` ```
### 8.5. ScrollView ### 8.6. ScrollView
ScrollView 会为其所容纳的对象创建滚动条。 ScrollView 会为其所容纳的对象创建滚动条。
### 8.6. GridView ### 8.7. QtQuick.ListView
TODO: header, headerPositioning
TODO: 如果通过设置 header 和 headerPositioning 参数来实现固定 header且同时伴有 ScrollBar 的情况下,滚动条依然会覆盖到 header 上,效果不理想。此时最好在 ListView 之外使用 Row 嵌套 Label 来实现类似效果。
### 8.7. GridView
GridView 可以以网格的形式显示模型内容。可以使用 ListModel 或 XmlListModel 作为模型。 GridView 可以以网格的形式显示模型内容。可以使用 ListModel 或 XmlListModel 作为模型。
@ -639,7 +652,7 @@ Window {
} }
``` ```
### 8.7. BusyIndicator ### 8.8. BusyIndicator
用于指示工作状态,设置 BusyIndicator 的 running 属性为 true 将默认显示一个旋转的圆圈;设置 running 属性为 false 则 BusyIndicator 将不显示。 用于指示工作状态,设置 BusyIndicator 的 running 属性为 true 将默认显示一个旋转的圆圈;设置 running 属性为 false 则 BusyIndicator 将不显示。
@ -664,7 +677,7 @@ Window {
可以对 BusyIndicator 进行自定义。 可以对 BusyIndicator 进行自定义。
### 8.8. VirtualKeyboard ### 8.9. VirtualKeyboard
一些涉及触屏的应用会涉及到虚拟键盘/软键盘的应用不同系统平台上往往会提供不同的软键盘工具但相比之下Qt 内嵌的 VirtualKeyboard 更加易用,并具有很好的跨平台能力,中文(拼音)、英文以及其他主要语言的支持能力也比较好。 一些涉及触屏的应用会涉及到虚拟键盘/软键盘的应用不同系统平台上往往会提供不同的软键盘工具但相比之下Qt 内嵌的 VirtualKeyboard 更加易用,并具有很好的跨平台能力,中文(拼音)、英文以及其他主要语言的支持能力也比较好。
@ -839,7 +852,7 @@ QML 与 C++ 之间主要通过信号槽机制来传递消息。
QML 使用 C++ 中声明的类型可以为类、结构体或枚举等。若需要将 C++ 类导出给 QML则需要使用 qmlRegisterType() 方法进行注册: QML 使用 C++ 中声明的类型可以为类、结构体或枚举等。若需要将 C++ 类导出给 QML则需要使用 qmlRegisterType() 方法进行注册:
```cpp ```cpp
qmlRegisterType<Type>("package.Type", <version>, <sub-version>,"Type"); qmlRegisterType<Type>("package.Type", <version>, <sub-version>, "Type");
``` ```
之后在 QML 中使用 C++ 类创建对象即可。若需要在 QML 中使用类中定义的枚举,格式如下: 之后在 QML 中使用 C++ 类创建对象即可。若需要在 QML 中使用类中定义的枚举,格式如下: