このページでは

SearchField QML Type

検索機能に特化した入力フィールド。詳細...

Import Statement: import QtQuick.Controls
Since: Qt 6.10
Inherits:

Control

プロパティ

信号

詳細説明

SearchField は、検索機能に特化した入力フィールドです。このコントロールには、テキストフィールド、検索アイコン、クリアアイコン、および候補や検索結果を表示するポップアップが含まれます。

注意: iOS スタイルでは、ネイティブのルック&フィールを維持するため、SearchField にポップアップを組み込みません。ポップアップが必要な場合は、ユーザーが定義する必要があります。

SearchFieldのインジケータ

SearchFieldはオプションで2つの埋め込みインジケータ・ボタンを提供します:searchIndicatorclearIndicator

これらはBusyIndicatorProgressBar のような意味でのインジケータではありません。その代わり、フィールドに埋め込まれたインタラクティブなコントロールです(SpinBox の上下ボタンに似ています)。searchIndicator を押すとsearchButtonPressed()がトリガーされ、clearIndicator を押すとclearButtonPressed()がトリガーされる。

アクションを公開することに加えて、インジケータボタンはスタイルによって使用できるインタラクションの状態(押された/隠された/フォーカスされたなど)を提供します。

インジケータ・コンテンツのカスタマイズ

searchIndicatorclearIndicator プロパティは読み取り専用です。カスタマイズは、それらの内部プロパティを通してサポートされています。

特に、ボタンの視覚的内容は、書き込み可能なindicator 項目によって提供されます。これにより、デフォルトの内容を置き換えたり、完全に削除したりすることができます。

例えば、両方のインジケーター・アイコンを削除することができます:

SearchField {
    searchIndicator.indicator: null
    clearIndicator.indicator: null
}

これはサポートされているカスタマイズシナリオです。異なるSearchFieldのバリアントは、ボタンの1つを省略したり(例えば、検索ボタンのみを提供する)、インジケータコンテンツを代替アイテムで置き換えたり(例えば、音声入力をトリガーするためのマイクアイコン)することができます。

SearchField モデルの役割

SearchFieldは、modelData ロールを提供する標準的なデータモデルを視覚化することができます:

  • ロールが1つしかないモデル
  • 名前付きロールを持たないモデル (JavaScript 配列、整数)

複数の名前付きロールを持つモデルを使用する場合、SearchField はtextdelegate インスタンスに特定の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]

このプロパティは、検索フィールドにデリゲート・インスタンスを提供するモデルを保持する。

これは通常、popupcontentItemListView に割り当てられます。

highlightedIndex : int [read-only]

このプロパティは、ポップアップリストで現在ハイライトされている項目のインデックスを保持する。

ハイライトされた項目がアクティブになると、ポップアップは閉じ、currentIndexhighlightedIndex と一致するように更新され、このプロパティは-1 にリセットされ、現在ハイライトされている項目がないことを示します。

highlighted() およびcurrentIndexも参照してください

live : bool

このプロパティは、テキスト編集ごとに検索をトリガーするかどうかを決定するブーリアン値を保持します。

true に設定すると、テキストが変更されるたびにsearchTriggered() シグナルが発信され、すべてのキー入力に応答できるようになります。false に設定すると、ユーザーが Enter キーまたは Return キーを押したときにのみsearchTriggered() が出力されます。

searchTriggered()も参照のこと

このプロパティはポップアップを保持します。

ポップアップは必要に応じて手動で開いたり閉じたりすることができます:

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.