new docs for project
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# LabelledField
|
||||
|
||||
## Обзор компонента
|
||||
|
||||
`Minecraft_launcher` — десктопный лаунчер Minecraft на Qt Quick с полностью самостоятельно
|
||||
оформленным тёмным интерфейсом. В диалоге настроек и в редакторе сборок много однотипных полей
|
||||
ввода: подпись сверху, поле под ней. `LabelledField` собирает эту пару в один компонент, чтобы
|
||||
отступы, цвета и подсветка фокуса не переписывались в каждом месте заново.
|
||||
|
||||
Компонент нужен там, где пользователь вводит короткое значение: имя профиля, объём памяти, путь,
|
||||
аргументы запуска.
|
||||
|
||||
## Место в проекте и зависимости
|
||||
|
||||
Импортирует `QtQuick` и `QtQuick.Controls 2.15`; C++-типы не используются.
|
||||
|
||||
Объявлен в `QML_FILES` модуля `Minecraft_launcher` (`CMakeLists.txt`) и доступен по имени внутри
|
||||
модуля без импорта. Применяется в диалоге настроек и в карточке сборки — см. [Main](Main.md) и
|
||||
[BuildsDialog](BuildsDialog.md).
|
||||
|
||||
## Иерархия и роль
|
||||
|
||||
Корневой тип — `Column` с расстоянием 3 px между элементами. Колонка содержит два потомка:
|
||||
`Text` с подписью (серый, 11 px) и `TextField` фиксированной высоты 32 px с тёмным фоном,
|
||||
скруглением 6 px и рамкой, которая при фокусе поля меняет цвет на акцентный.
|
||||
|
||||
Ширина поля привязана к ширине самой колонки, поэтому размер задаётся снаружи одним свойством
|
||||
`width` корневого элемента. Высоту `Column` вычисляет сам.
|
||||
|
||||
## Свойства
|
||||
|
||||
| Свойство | Тип | По умолчанию | Обязательное | Описание |
|
||||
|----------|-----|--------------|--------------|----------|
|
||||
| `text` | `string` (алиас на `text` внутреннего поля) | `""` | Нет | Содержимое поля ввода. Работает в обе стороны: чтение возвращает введённое значение, запись подставляет новое. |
|
||||
| `validator` | `var` (алиас на `validator` внутреннего поля) | `null` | Нет | Валидатор ввода — например `IntValidator` для числовых полей. Ограничивает то, что пользователь может набрать. |
|
||||
| `label` | `string` | `""` | Нет | Текст подписи над полем. |
|
||||
| `placeholder` | `string` | `""` | Нет | Подсказка, показываемая в пустом поле приглушённым цветом. |
|
||||
|
||||
## Сигналы
|
||||
|
||||
#### editingFinished()
|
||||
|
||||
Проброшен из внутреннего `TextField`: срабатывает, когда правка закончена — поле потеряло фокус
|
||||
или пользователь нажал Enter. Промежуточные нажатия клавиш сигнала не вызывают.
|
||||
|
||||
Обработчик обычно сохраняет введённое значение: читает `text` и передаёт его в бэкенд или в
|
||||
модель родительского диалога. Именно из-за этой семантики поля настроек сохраняются по завершении
|
||||
правки, а не на каждый символ.
|
||||
|
||||
## Методы
|
||||
|
||||
Собственных функций нет.
|
||||
|
||||
## Взаимодействие с другими компонентами
|
||||
|
||||
Компонент не знает ни о бэкенде, ни о содержащем его диалоге. Родитель задаёт `label`,
|
||||
`placeholder`, начальный `text` и при необходимости `validator`, а затем подписывается на
|
||||
`editingFinished`, чтобы записать значение. Двусторонней привязки к бэкенду внутри компонента нет
|
||||
— решение о том, когда и куда сохранять, целиком за родителем.
|
||||
|
||||
## Пример использования
|
||||
|
||||
```qml
|
||||
LabelledField {
|
||||
width: parent.width
|
||||
label: "Оперативная память, МБ"
|
||||
placeholder: "2048"
|
||||
text: String(settings.memoryMb)
|
||||
validator: IntValidator { bottom: 512; top: 32768 }
|
||||
onEditingFinished: settings.memoryMb = parseInt(text)
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
При создании этого документа использовался ИИ.
|
||||
Reference in New Issue
Block a user