ComboBox QML Type
オプションを選択するためのボタンとポップアップリストを組み合わせたものです。詳細...
Import Statement: | import QtQuick.Controls |
Inherits: |
プロパティ
- acceptableInput : bool
(since QtQuick.Controls 2.2 (Qt 5.9))
- count : int
- currentIndex : int
- currentText : string
- currentValue : var
(since QtQuick.Controls 2.14 (Qt 5.14))
- delegate : Component
- delegateModel : model
- displayText : string
- down : bool
(since QtQuick.Controls 2.2 (Qt 5.9))
- editText : string
(since QtQuick.Controls 2.2 (Qt 5.9))
- editable : bool
(since QtQuick.Controls 2.2 (Qt 5.9))
- flat : bool
(since QtQuick.Controls 2.1 (Qt 5.8))
- highlightedIndex : int
- implicitContentWidthPolicy : enumeration
(since QtQuick.Controls 6.0 (Qt 6.0))
- implicitIndicatorHeight : real
(since QtQuick.Controls 2.5 (Qt 5.12))
- implicitIndicatorWidth : real
(since QtQuick.Controls 2.5 (Qt 5.12))
- indicator : Item
- inputMethodComposing : bool
(since QtQuick.Controls 2.2 (Qt 5.9))
- inputMethodHints : flags
(since QtQuick.Controls 2.2 (Qt 5.9))
- model : model
- popup : Popup
- pressed : bool
- selectTextByMouse : bool
(since QtQuick.Controls 2.15 (Qt 5.15))
- textRole : string
- validator : Validator
(since QtQuick.Controls 2.2 (Qt 5.9))
- valueRole : string
(since QtQuick.Controls 2.14 (Qt 5.14))
信号
- void accepted()
(since QtQuick.Controls 2.2 (Qt 5.9))
- void activated(int index)
- void highlighted(int index)
方法
- void decrementCurrentIndex()
- int find(string text, enumeration flags)
- void incrementCurrentIndex()
- int indexOfValue(object value)
(since QtQuick.Controls 2.14 (Qt 5.14))
- void selectAll()
(since QtQuick.Controls 2.2 (Qt 5.9))
- string textAt(int index)
- var valueAt(int index)
(since QtQuick.Controls 2.14 (Qt 5.14))
詳しい説明
ComboBox はボタンとポップアップリストを組み合わせたものです。これは、最小限の画面スペースを取る方法でユーザーにオプションのリストを提示する手段を提供します。
ComboBox にはデータ モデルが入力されます。データ モデルは一般的に JavaScript の配列、ListModel または整数ですが、他のデータ モデルもサポートされています。
ComboBox { model: ["First", "Second", "Third"] }
編集可能なコンボボックス
コンボボックスはeditable にすることができます。編集可能なコンボボックスは、モデルで利用可能なものに基づいてテキストを自動補完します。
次の例では、accepted シグナルに反応して、編集可能なコンボボックスに内容を追加することを示します。
ComboBox { editable: true model: ListModel { id: model ListElement { text: "Banana" } ListElement { text: "Apple" } ListElement { text: "Coconut" } } onAccepted: { if (find(editText) === -1) model.append({text: editText}) } }
コンボボックスのポップアップ
デフォルトでは、ComboBox のポップアップの外側をクリックするとポップアップが閉じ、そのイベントは積み重ね順位の低いアイテムに伝搬されます。ポップアップを閉じないようにするには、closePolicy を設定します:
popup.closePolicy: Popup.CloseOnEscape
イベントの伝播を防ぐには、そのmodal プロパティをtrue
に設定します:
popup.modal: true
コンボボックス・モデルの役割
コンボボックスは、modelData
ロールを提供する標準データモデルを視覚化できます:
- ロールが 1 つしかないモデル
- 名前付きロールを持たないモデル (JavaScript 配列、整数)
複数の名前付きロールを持つモデルを使用する場合、ComboBox はdisplay text とdelegate インスタンスに特定のtext role を使用するように設定する必要があります。テキスト・ロールに対応するモデル項目のロールを使用する場合は、valueRole を設定します。その後、currentValue プロパティとindexOfValue() メソッドを使用して、これらの値に関する情報を取得できます。
例えば
ApplicationWindow { width: 640 height: 480 visible: true // Used as an example of a backend - this would usually be // e.g. a C++ type exposed to QML. QtObject { id: backend property int modifier } ComboBox { textRole: "text" valueRole: "value" // When an item is selected, update the backend. onActivated: backend.modifier = currentValue // Set the initial currentIndex to the value stored in the backend. Component.onCompleted: currentIndex = indexOfValue(backend.modifier) model: [ { value: Qt.NoModifier, text: qsTr("No modifier") }, { value: Qt.ShiftModifier, text: qsTr("Shift") }, { value: Qt.ControlModifier, text: qsTr("Control") } ] } }
注釈 ComboBox に複数の名前付きロールを持つデータ・モデルが割り当てられているにもかかわらず、textRole が定義されていない場合、ComboBox はそれを視覚化できず、ReferenceError: modelData is not defined
をスローします。
Qt Quick Controls のComboBox、入力コントロール、およびフォーカス管理のカスタマイズも参照してください 。
プロパティ ドキュメント
acceptableInput : bool |
count : int |
このプロパティは、コンボボックス内の項目数を保持します。
currentIndex : int |
このプロパティは、コンボボックス内の現在の項目のインデックスを保持します。
デフォルト値は、count が0
の場合は-1
で、それ以外の場合は0
です。
activated()、currentText 、およびhighlightedIndexも参照してください 。
currentText : string |
このプロパティは、コンボボックスの現在の項目のテキストを保持します。
currentIndex 、displayText 、textRole 、およびeditTextも参照して ください。
currentValue : var |
このプロパティは、コンボボックスの現在の項目の値を保持します。
このプロパティの使用例については、ComboBox Model Roles を参照してください。
このプロパティは、QtQuick.Controls 2.14(Qt 5.14)で導入されました。
currentIndex 、currentText 、valueRoleも参照してください 。
delegate : Component |
このプロパティは、コンボボックスのポップアップで項目を提示するデリゲートを保持します。
デリゲートとしてItemDelegate (または他のAbstractButton 派生物)を使用することをお勧めします。これにより、インタラクションが期待通りに動作し、適切なときにポップアップが自動的に閉じます。他の型をデリゲートとして使用する場合、ポップアップは手動で閉じなければなりません。例えば、MouseArea :
delegate: Rectangle { // ... MouseArea { // ... onClicked: comboBox.popup.close() } }
ItemDelegate とComboBox のカスタマイズも参照してください 。
delegateModel : model |
このプロパティは、コンボボックスのデリゲート・インスタンスを提供するモデルを保持します。
通常、popup のcontentItem のListView に割り当てられます。
コンボボックスのカスタマイズ」も参照してください 。
displayText : string |
このプロパティは、コンボボックスのボタンに表示されるテキストを保持します。
デフォルトでは、表示テキストは現在の選択内容を示します。つまり、現在の項目のテキストに従います。しかし、デフォルトの表示テキストはカスタム値で上書きすることができます。
ComboBox { currentIndex: 1 displayText: "Size: " + currentText model: ["S", "M", "L"] }
currentText およびtextRoleも参照してください 。
down : bool |
editText : string |
このプロパティは、編集可能なコンボボックスのテキストフィールドのテキストを保持します。
このプロパティは QtQuick.Controls 2.2 (Qt 5.9) で導入されました。
editable 、currentText 、displayTextも参照してください 。
editable : bool |
このプロパティは、コンボボックスが編集可能かどうかを保持します。
デフォルト値はfalse
です。
このプロパティは QtQuick.Controls 2.2 (Qt 5.9) で導入されました。
validatorも参照してください 。
flat : bool |
このプロパティは、コンボボックスボタンがフラットであるかどうかを保持します。
フラットなコンボボックスボタンは、操作されない限り背景を描画しません。通常のコンボボックスと比較して、フラットなコンボボックスは、UIの他の部分から目立たなくする外観を提供します。例えば、コンボボックスをツールバーに配置する場合、コンボボックスをフラットにすることで、ツールボタンのフラットなルックスとマッチしやすくなります。
デフォルト値はfalse
です。
このプロパティは、QtQuick.Controls 2.1(Qt 5.8)で導入されました。
highlightedIndex : int |
このプロパティは、コンボボックスのポップアップリストでハイライトされた項目のインデックスを保持します。
ハイライトされた項目がアクティブになると、ポップアップが閉じられ、currentIndex がhighlightedIndex
に設定され、ハイライトされた項目がなくなるので、このプロパティの値は-1
にリセットされます。
highlighted() およびcurrentIndexも参照のこと 。
implicitContentWidthPolicy : enumeration |
このプロパティは、ComboBox のimplicitContentWidth の計算方法を制御する。
ComboBox の幅がテキストを表示するのに十分でない場合、そのテキストは消去される。テキストのどの部分が省略されるかによって、エンドユーザが項目を選択するのが難しくなる可能性があります。ComboBox 、テキストが消えないように十分な幅を確保する効率的な方法は、十分大きいとわかっている幅を設定することです:
width: 300 implicitContentWidthPolicy: ComboBox.ContentItemImplicitWidth
しかし、テキストの大きさは、フォントファミリ、フォントサイズ、翻訳など、多くの要因に依存するため、ハードコードされた値が十分な大きさになるかどうかを知ることは、しばしば不可能です。
implicitContentWidthPolicyは、implicitContentWidthの計算方法を制御する簡単な方法を提供し、その結果ComboBox のimplicitWidth に影響を与え、テキストがエリッドされないことを保証します。
利用可能な値は
定数 | 説明 |
---|---|
ContentItemImplicitWidth | implicitContentWidth はデフォルトでcontentItem のものになります。 余分なテキストレイアウトが行われないので、これは最も効率的なオプションです。 |
WidestText | implicitContentWidth は、モデルが変わるたびに、与えられたtextRole に対する最大のテキストの暗黙の幅に設定されます。こ のオプシ ョ ンは、 コ ス ト が大き く な る可能性があ る ので、 小 さ いモデルで用い る べ き です。 |
WidestTextWhenCompleted | implicitContentWidth は、component completion の後に一度だけ、与えられたtextRole に対する最大のテキストの暗黙の幅に設定されます。こ のオプシ ョ ンは、 コ ス ト が大き く な る可能性があ る ので、 よ り 小 さ なモデルで用い る べ き です。 |
デフォルト値はContentItemImplicitWidth
です。
こ のプ ロ パテ ィ はComboBox のimplicitWidth
に対 し てのみ効力を持つので、 明示的なwidth を設定 し て も エ ラ イ ド が発生す る 可能性があ り ます。
注意: この機能には、contentItem がTextInput から派生した型である必要があります。
注: この機能は、テキストをレイアウトする必要があるため、大規模なモデルや内容が頻繁に更新されるモデルでは、コストが高くなる可能性があります。
このプロパティは、QtQuick.Controls 6.0(Qt 6.0)で導入されました。
implicitIndicatorHeight : real |
このプロパティは、暗黙のインジケータの高さを保持します。
値はindicator ? indicator.implicitHeight : 0
に等しい。
これは通常、implicitContentHeight とimplicitBackgroundHeight とともに、implicitHeight を計算するために使用されます。
このプロパティは、QtQuick.Controls 2.5(Qt 5.12)で導入されました。
implicitIndicatorWidthも参照してください 。
implicitIndicatorWidth : real |
このプロパティは、暗黙のインジケータの幅を保持します。
値はindicator ? indicator.implicitWidth : 0
と等しくなります。
これは通常、implicitContentWidth およびimplicitBackgroundWidth とともに、implicitWidth を計算するために使用されます。
このプロパティは、QtQuick.Controls 2.5(Qt 5.12)で導入されました。
implicitIndicatorHeightも参照してください 。
indicator : Item |
このプロパティは、ドロップインジケータ項目を保持します。
コンボボックスのカスタマイズ」も参照してください 。
inputMethodComposing : bool |
このプロパティは、編集可能なコンボボックスが入力メソッドからの部分的なテキスト入力を持つかどうかを保持します。
入力メソッドは、コンボボックスからのマウスイベントまたはキーイベントに依存して、部分テキストを編集またはコミットすることができます。このプロパティは、入力メソッドの正しい動作を妨げる可能性のあるイベントハンドラを無効にするタイミングを決定するために使用できます。
このプロパティは QtQuick.Controls 2.2 (Qt 5.9) で導入されました。
inputMethodHints : flags |
入力メソッドに、コンボボックスの予想される内容と、その操作方法についてのヒントを提供します。
デフォルト値はQt.ImhNoPredictiveText
です。
値はフラグのビット単位の組み合わせか、ヒントが設定されていない場合はQt.ImhNone
です。
動作を変更するフラグは以下の通りです:
- Qt.ImhHiddenText - パスワードを入力するときによく使われるように、文字を隠します。
- Qt.ImhSensitiveData - 入力されたテキストは、Active Inputメソッドによって、予測辞書のような永続的なストレージに保存されません。
- Qt.ImhNoAutoUppercase - 入力メソッドは、文の終了時に自動的に大文字に切り替えようとしません。
- Qt.ImhPreferNumbers - 数字が優先されます(必須ではありません)。
- Qt.ImhPreferUppercase - 大文字を優先する(必須ではない)。
- Qt.ImhPreferLowercase - 小文字が優先されます(必須ではありません)。
- Qt.ImhNoPredictiveText - 入力中に予測入力(辞書検索など)を使用しない。
- Qt.ImhDate - テキストエディタが日付フィールドとして機能します。
- Qt.ImhTime - テキスト・エディタは時間フィールドとして機能します。
入力を制限するフラグ(排他フラグ)は以下の通りです:
- Qt.ImhDigitsOnly - 数字のみ入力可能。
- Qt.ImhFormattedNumbersOnly - 数値入力のみが許可されます。小数点やマイナス記号も含まれます。
- Qt.ImhUppercaseOnly - 大文字の入力のみが許可されます。
- Qt.ImhLowercaseOnly - 小文字の入力のみが許可されます。
- Qt.ImhDialableCharactersOnly - 電話ダイヤルに適した文字のみが許可されます。
- Qt.ImhEmailCharactersOnly - メールアドレスに適した文字のみが許可されます。
- Qt.ImhUrlCharactersOnly - URL に適した文字のみが許可されます。
マスク:
- Qt.ImhExclusiveInputMask - このマスクは、排他フラグのいずれかが使用されている場合に非ゼロを返します。
このプロパティは QtQuick.Controls 2.2 (Qt 5.9) で導入されました。
model : model |
このプロパティは、コンボボックスのデータを提供するモデルを保持します。
ComboBox { textRole: "key" model: ListModel { ListElement { key: "First"; value: 123 } ListElement { key: "Second"; value: 456 } ListElement { key: "Third"; value: 789 } } }
popup : Popup |
このプロパティはポップアップを保持します。
ポップアップは、必要に応じて、手動で開いたり閉じたりすることができます:
onSpecialEvent: comboBox.popup.close()
コンボボックスのカスタマイズ」も参照して ください。
pressed : bool |
このプロパティは、コンボボックスのボタンが物理的に押されたかどうかを保持します。ボタンはタッチまたはキーイベントによって押されます。
downも参照 。
selectTextByMouse : bool |
このプロパティは、編集可能なComboBox のテキストフィールドをマウスで選択できるかどうかを保持します。
デフォルト値はfalse
です。
このプロパティは、QtQuick.Controls 2.15(Qt 5.15)で導入されました。
textRole : string |
このプロパティは、コンボボックスへの入力に使用されるモデルのロールを保持します。
モデルに複数のロールがある場合、textRole
、どのロールを表示するかを設定することができます。
model 、currentText 、displayText 、ComboBox Model Rolesも参照してください 。
validator : Validator |
このプロパティは、編集可能なコンボボックスの入力テキストバリデータを保持します。
バリデータが設定されると、テキストフィールドはtextプロパティを中間状態にする入力のみを受け付ける。accepted シグナルは、Return またはEnter キーが押されたときにテキストが許容可能な状態にある場合にのみ発せられます。
現在サポートしているバリデータはIntValidator 、DoubleValidator 、RegularExpressionValidator です。バリデータの使用例を以下に示します。0
から10
までの整数をテキストフィールドに入力することができます:
ComboBox { model: 10 editable: true validator: IntValidator { top: 9 bottom: 0 } }
このプロパティは QtQuick.Controls 2.2 (Qt 5.9) で導入されました。
acceptableInput,accepted,editableも参照してください 。
valueRole : string |
このプロパティは、モデル内の各項目に関連付けられた値を格納するために使用されるモデル・ロールを保持します。
このプロパティの使用方法の例については、ComboBox Model Roles を参照してください。
このプロパティは、QtQuick.Controls 2.14(Qt 5.14)で導入されました。
model およびcurrentValueも参照して ください。
シグナルのドキュメント
|
このシグナルは、editable コンボボックスでReturn またはEnter キーが押されたときに発せられます。
例えば、新しく入力された項目をモデルに追加するために、このシグナルを処理することができます:
ComboBox { editable: true model: ListModel { id: model ListElement { text: "Banana" } ListElement { text: "Apple" } ListElement { text: "Coconut" } } onAccepted: { if (find(editText) === -1) model.append({text: editText}) } }
シグナルが発せられる前に、その文字列がモデルに存在するかどうかがチェックされます。存在する場合、currentIndex にそのインデックスが、currentText に文字列そのものが設定されます。
シグナルが発信された後、最初のチェックが失敗した場合(つまり、アイテムが存在しなかった場合)、シグナルハンドラによってアイテムが追加されたかどうか、別のチェックが行われます。追加されていれば、currentIndex とcurrentText がそれに応じて更新される。そうでなければ、それぞれ-1
と""
に設定される。
注意 :コンボボックスにvalidator が設定されている場合、シグナルは入力が受け入れ可能な状態のときのみ発せられる。
注: 対応するハンドラはonAccepted
です。
このシグナルはQtQuick.Controls 2.2 (Qt 5.9)で導入されました。
void activated(int index) |
このシグナルは、index のアイテムがユーザーによってアクティベートされた時に発せられます。
アイテムがアクティブになるのは、ポップアップが開いている間にそのアイテムが選択され、ポップアップが閉じられる(そして、currentIndex が変更される)場合、またはポップアップが閉じられ、コンボボックスがキーボードでナビゲートされ、currentIndex が変更される場合です。currentIndex プロパティはindex に設定されます。
注: 対応するハンドラはonActivated
です。
currentIndexも参照 。
void highlighted(int index) |
このシグナルは、ポップアップ・リストのindex の項目がユーザーによってハイライトされたときに発せられます。
highlighted シグナルは、ポップアップが開いていて、アイテムがハイライトされているときにのみ発せられますが、必ずしもactivated である必要はありません。
注意: 対応するハンドラはonHighlighted
です。
highlightedIndexも参照してください 。
メソッドの説明
void decrementCurrentIndex() |
コンボボックスの現在のインデックス、またはポップアップリストが表示されている場合はハイライトされたインデックスをデクリメントします。
currentIndex およびhighlightedIndexも参照して ください。
int find(string text, enumeration flags) |
指定されたtext のインデックスを返し、マッチしない場合は-1
を返します。
検索の実行方法は、指定されたマッチflags によって定義されます。デフォルトでは、コンボボックスは大文字小文字を区別して完全一致を行います (Qt.MatchExactly
)。その他のマッチタイプは、Qt.MatchCaseSensitive
フラグが指定されていない限り、大文字小文字を区別しません。
定数 | 説明 |
---|---|
Qt.MatchExactly | 検索語は正確にマッチします (デフォルト)。 |
Qt.MatchRegularExpression | 検索語は正規表現としてマッチします。 |
Qt.MatchWildcard | 検索語はワイルドカードを使用してマッチします。 |
Qt.MatchFixedString | 検索語は固定文字列としてマッチします。 |
Qt.MatchStartsWith | 検索語は項目の先頭にマッチします。 |
Qt.MatchEndsWith | 検索語が項目の末尾に一致する。 |
Qt.MatchContains | 検索語が項目内に含まれる |
Qt.MatchCaseSensitive | 検索では大文字と小文字が区別されます。 |
注意: この関数は、ComboBox に対してComponent.completed() が発行された後にのみ使用できる。
例えば
ComboBox { model: ListModel { ListElement { text: "Banana" } ListElement { text: "Apple" } ListElement { text: "Coconut" } } Component.onCompleted: currentIndex = find("Coconut") }
textRoleも参照 。
void incrementCurrentIndex() |
コンボボックスの現在のインデックス、またはポップアップリストが表示されている場合はハイライトされたインデックスをインクリメントします。
currentIndex およびhighlightedIndex も参照して ください。
|
指定されたvalue のインデックスを返し、マッチしない場合は-1
を返す。
このメソッドの使用例については、ComboBox Model Roles を参照。
注意: この関数は、ComboBox に対してComponent.completed() が発行された後にのみ使用できます。
このメソッドは QtQuick.Controls 2.14 (Qt 5.14) で導入されました。
find()、currentValue 、currentIndex 、valueRole 、valueAtも参照してください 。
|
コンボボックスの編集可能なテキストフィールドのテキストをすべて選択します。
このメソッドは QtQuick.Controls 2.2 (Qt 5.9) で導入されました。
editTextも参照してください 。
指定されたindex のテキスト、またはインデックスが範囲外の場合は空の文字列を返します。
注意: この関数は、ComboBox に対してComponent.completed() が発行された後にのみ使用できます。
例えば
ComboBox { model: ListModel { ListElement { text: "Banana" } ListElement { text: "Apple" } ListElement { text: "Coconut" } } onActivated: (index) => { print(textAt(index)) } }
textRoleも参照。
コンボボックスの位置index にある値を返します。
このメソッドは QtQuick.Controls 2.14 (Qt 5.14) で導入されました。
indexOfValueも参照してください 。
© 2025 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.