ComboBox QMLタイプですが、複雑すぎたので調べたことをメモに残しておきます。
Qt 5.11.2あたりの情報です。
import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick.Window 2.11 //アプリのウィンドウサイズを取得するのに使う
ComboBox {
id: control
background: Rectangle {}//Popup開く前、元の状態の背景
contentItem: Text {}//Popup開く前、元の状態の文字
indicator: Image{}//Popup開く前、元の状態のときに出てくる記号
delegate: ItemDelegate {//Popupの子のListViewで羅列するデリゲート
contentItem: Text {}//デリゲートに表示させる文字
background: Rectangle {}//背景
}
popup: Popup {//ComboBoxをクリックしたときに出てくるポップアップ
y: control.height
width: control.width
//Popupのheightは最大で、アプリのウィンドウサイズまで広がる。
height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin)
contentItem: ListView {//ポップアップの中にあるListView。ComboBoxのdelegateが並ぶ。
ScrollIndicator.vertical: ScrollIndicator {//さらにスクロールインジケーターを配置
contentItem: Rectangle {}//スクロールインジケータはほっそいRectangleなどで作ろう
}
}
}
}
もちろん、TextだのRecangleだのImageだのは好きなものに置き換えても動作します。
ComboBoxのpopupのcontentItemのScrollIndicator.verticalのcontentItemのRectangle…?
俺はスクロールインジケーターの形と色を変えたかっただけなんだ。
なのになぜこんな遠いところまで来てしまったんだ…。