parent
510a9e13db
commit
cd5e1c26c2
|
@ -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)三部分,每个部分都可以单独设定。
|
||||||
|
|
||||||
- footer:Item
|
- footer:Item
|
||||||
|
|
||||||
|
@ -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 中使用类中定义的枚举,格式如下:
|
||||||
|
|
Loading…
Reference in New Issue