SearchField QML Type
検索機能に特化した入力フィールド。詳細...
| Import Statement: | import QtQuick.Controls |
| Since: | Qt 6.10 |
| Inherits: |
プロパティ
- clearIndicator
- clearIndicator.hovered : bool
- clearIndicator.implicitIndicatorHeight : real
- clearIndicator.implicitIndicatorWidth : real
- clearIndicator.indicator : Item
- clearIndicator.pressed : bool
- currentIndex : int
- delegate : Component
- delegateModel : model
- highlightedIndex : int
- live : bool
- popup : Popup
- searchIndicator
- searchIndicator.hovered : bool
- searchIndicator.implicitIndicatorHeight : real
- searchIndicator.implicitIndicatorWidth : real
- searchIndicator.indicator : Item
- searchIndicator.pressed : bool
- suggestionCount : int
- suggestionModel : model
- text : string
- textRole : string
信号
- void accepted()
- void activated(int index)
- void clearButtonPressed()
- void highlighted(int index)
- void searchButtonPressed()
- void searchTriggered()
- void textEdited()
詳細説明
SearchField は、検索機能に特化した入力フィールドです。このコントロールには、テキストフィールド、検索アイコン、クリアアイコン、および候補や検索結果を表示するポップアップが含まれます。
注意: iOS スタイルでは、ネイティブのルック&フィールを維持するため、SearchField にポップアップを組み込みません。ポップアップが必要な場合は、ユーザーが定義する必要があります。
SearchFieldのインジケータ
SearchFieldはオプションで2つの埋め込みインジケータ・ボタンを提供します:searchIndicator とclearIndicator 。
これらはBusyIndicator やProgressBar のような意味でのインジケータではありません。その代わり、フィールドに埋め込まれたインタラクティブなコントロールです(SpinBox の上下ボタンに似ています)。searchIndicator を押すとsearchButtonPressed()がトリガーされ、clearIndicator を押すとclearButtonPressed()がトリガーされる。
アクションを公開することに加えて、インジケータボタンはスタイルによって使用できるインタラクションの状態(押された/隠された/フォーカスされたなど)を提供します。
インジケータ・コンテンツのカスタマイズ
searchIndicator とclearIndicator プロパティは読み取り専用です。カスタマイズは、それらの内部プロパティを通してサポートされています。
特に、ボタンの視覚的内容は、書き込み可能なindicator 項目によって提供されます。これにより、デフォルトの内容を置き換えたり、完全に削除したりすることができます。
例えば、両方のインジケーター・アイコンを削除することができます:
SearchField { searchIndicator.indicator: null clearIndicator.indicator: null }
これはサポートされているカスタマイズシナリオです。異なるSearchFieldのバリアントは、ボタンの1つを省略したり(例えば、検索ボタンのみを提供する)、インジケータコンテンツを代替アイテムで置き換えたり(例えば、音声入力をトリガーするためのマイクアイコン)することができます。
SearchField モデルの役割
SearchFieldは、modelData ロールを提供する標準的なデータモデルを視覚化することができます:
- ロールが1つしかないモデル
- 名前付きロールを持たないモデル (JavaScript 配列、整数)
複数の名前付きロールを持つモデルを使用する場合、SearchField はtext とdelegate インスタンスに特定のtext role を使用するように設定しなければなりません。
ListModel {
id : fruitModel
ListElement { name: "Apple"; color: "green" }
ListElement { name: "Cherry"; color: "red" }
ListElement { name: "Banana"; color: "yellow" }
ListElement { name: "Orange"; color: "orange" }
ListElement { name: "WaterMelon"; color: "pink" }
}
SortFilterProxyModel {
id: fruitFilter
model: fruitModel
sorters: [
RoleSorter {
roleName: "name"
}
]
filters: [
FunctionFilter {
component CustomData: QtObject { property string name }
property var regExp: new RegExp(fruitSearch.text, "i")
onRegExpChanged: invalidate()
function filter(data: CustomData): bool {
return regExp.test(data.name);
}
}
]
}
SearchField {
id: fruitSearch
suggestionModel: fruitFilter
textRole: "name"
anchors.horizontalCenter: parent.horizontalCenter
}searchIndicator,clearIndicator,searchButtonPressed(),clearButtonPressed()も参照してください 。
プロパティ・ドキュメント
clearIndicator group
clearIndicator.hovered : bool
clearIndicator.implicitIndicatorHeight : real
clearIndicator.implicitIndicatorWidth : real
clearIndicator.indicator : Item
clearIndicator.pressed : bool
このグループ化されたプロパティは、clearIndicator インジケータ項目とその関連プロパティを保持する。
このプロパティは、クリア・インジケータを保持します。これを押すと、clearButtonPressed ()がトリガーされます。
このプロパティは、スタイルやアプリケーションがその内部プロパティを通してカスタマイズできるように公開されています(例えば、clearIndicator.indicator を使ってclearIndicator を置き換えたり削除したり、押された状態やホバーされた状態などのインタラクションの状態に反応させることができます)。
SearchField's Indicatorsも参照してください 。
currentIndex : int
このプロパティは、ポップアップリストで現在選択されている提案のインデックスを保持します。
何も選択されていない場合、この値は-1 になります。
currentIndex は、モデルが変更されたり、ユーザがテキストを入力したり編集したりしても、自動的に変更されることはありません。ポップアップ内の項目をクリックするか、ハイライトされた項目で Enter キーを押すことによって、ユーザが明示的に提案を選択した場合にのみ更新されます。
currentIndex は、例えば、起動時にモデルの最初の項目を表示するように設定することができます。そうする前に、モデルが空でないことを確認してください:
SearchField { id: searchField suggestionModel: ListModel { ListElement { value: "123,456" } } textRole: "value" Component.onCompleted: { if (suggestionModel.count > 0) { text = suggestionModel.get(0).value currentIndex = 0 } } }
activated()、text 、およびhighlightedIndexも参照してください 。
delegate : Component
このプロパティは、検索フィールドポップアップに項目を提示するデリゲートを保持する。
デリゲートとしてItemDelegate (または他のAbstractButton 派生物) を使用することをお勧めします。これにより、インタラクションが期待通りに動作し、適切なときにポップアップが自動的に閉じることが保証されます。他の型をデリゲートとして使用する場合、ポップアップは手動で閉じなければなりません。例えば、MouseArea :
delegate: Rectangle {
// ...
MouseArea {
// ...
onClicked: searchField.popup.close()
}
}Qt 6.11 以降、SearchField はデリゲートの所有権を持ちません。
delegateModel : model [read-only]
このプロパティは、検索フィールドにデリゲート・インスタンスを提供するモデルを保持する。
これは通常、popup のcontentItem のListView に割り当てられます。
highlightedIndex : int [read-only]
このプロパティは、ポップアップリストで現在ハイライトされている項目のインデックスを保持する。
ハイライトされた項目がアクティブになると、ポップアップは閉じ、currentIndex はhighlightedIndex と一致するように更新され、このプロパティは-1 にリセットされ、現在ハイライトされている項目がないことを示します。
highlighted() およびcurrentIndexも参照してください 。
live : bool
このプロパティは、テキスト編集ごとに検索をトリガーするかどうかを決定するブーリアン値を保持します。
true に設定すると、テキストが変更されるたびにsearchTriggered() シグナルが発信され、すべてのキー入力に応答できるようになります。false に設定すると、ユーザーが Enter キーまたは Return キーを押したときにのみsearchTriggered() が出力されます。
searchTriggered()も参照のこと 。
popup : Popup
このプロパティはポップアップを保持します。
ポップアップは必要に応じて手動で開いたり閉じたりすることができます:
onSpecialEvent: searchField.popup.close()
searchIndicator group
searchIndicator.hovered : bool
searchIndicator.implicitIndicatorHeight : real
searchIndicator.implicitIndicatorWidth : real
searchIndicator.indicator : Item
searchIndicator.pressed : bool
このグループ化されたプロパティは、searchIndicator インジケータ項目とその関連プロパティを保持する。
このプロパティは、検索インジケータを保持する。これを押すと、searchButtonPressed ()がトリガーされます。
これは、スタイルやアプリケーションがその内部プロパティを通してカスタマイズできるように公開されています(例えば、searchIndicator.indicator を通してsearchIndicator を置き換えたり削除したり、押された、ホバーされたなどのインタラクション状態に反応したりします)。
SearchField's Indicatorsも参照してください 。
suggestionCount : int [read-only]
このプロパティは、提案モデルから表示する提案の数を保持します。
suggestionModel : model
このプロパティは、ポップアップメニューに検索候補を表示するために使用されるデータモデルを保持します。
SearchField { textRole: "age" suggestionModel: ListModel { ListElement { name: "Karen"; age: "66" } ListElement { name: "Jim"; age: "32" } ListElement { name: "Pamela"; age: "28" } } }
textRoleも参照してください 。
text : string
このプロパティは、検索フィールドの現在の入力テキストを保持します。
テキストはユーザー入力にバインドされ、サジェストの更新や検索ロジックをトリガーします。
searchTriggered() およびtextEdited()も参照してください 。
textRole : string
このプロパティは、ポップアップリストに表示されるサジェストモデルのアイテムを表示するために使用されるモデルのロールを保持します。
モデルに複数のロールがある場合、textRole 、どのロールを表示するかを設定することができます。
シグナルのドキュメント
void accepted()
このシグナルは、ユーザーがEnterキーまたはReturnキーを押して入力を確定したときに発せられる。
このシグナルは通常、最終的なテキスト入力に基づいて検索やアクションをトリガーするために使用され、ユーザーがクエリを完了または送信する意思を示します。
注: 対応するハンドラはonAccepted 。
searchTriggered()も参照のこと 。
void activated(int index)
このシグナルは、index のアイテムがユーザーによってアクティベートされたときに発せられる。
アイテムがアクティブになるのは、ポップアップが開いている間にそのアイテムが選択され、ポップアップが閉じる(そしてcurrentIndex が変わる)ときです。currentIndex プロパティはindex に設定されます。
注: 対応するハンドラはonActivated です。
currentIndexも参照してください 。
void clearButtonPressed()
このシグナルはクリアボタンが押されたときに発せられる。
注: 対応するハンドラはonClearButtonPressed 。
searchButtonPressed()も参照のこと 。
void highlighted(int index)
このシグナルは、ポップアップ・リストのindex の項目がユーザーによってハイライトされたときに発せられる。
highlighted シグナルは、ポップアップが開いていて、アイテムがハイライトされているときにのみ発せられますが、必ずしもactivated である必要はありません。
注意: 対応するハンドラはonHighlighted です。
highlightedIndexも参照してください 。
void searchButtonPressed()
このシグナルは検索ボタンが押されたときに発せられる。
注: 対応するハンドラはonSearchButtonPressed 。
clearButtonPressed()も参照のこと 。
void searchTriggered()
このシグナルは、検索アクションが開始されたときに発せられる。
次の2つの場合に発生する:1.1.EnterキーまたはReturnキーが押されたとき、accepted()シグナルとともに発せられる 2.テキストが編集され、live プロパティがtrue に設定されると、このシグナルが発信されます。
このシグナルは、希望するインタラクション・モデルに応じて、オンデマンドでもリアルタイムでも、ユーザーの入力に合わせて検索を開始するのに理想的です。
注: 対応するハンドラはonSearchTriggered です。
accepted() およびtextEdited()も 参照のこと。
void textEdited()
このシグナルは、ユーザーが検索フィールドのテキストを変更するたびに、通常はキーストロークのたびに発行される。
注: 対応するハンドラはonTextEdited 。
searchTriggered()も参照のこと 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.