Ed *_*Nio 5 combobox qml qt-quick
我希望我ComboBox必须适应我列表中width最长String Item的一个.
代码示例:
ComboBox {
model: [ "Banana", "Apple", "ThisIsTheLongestWordThatIHave,"Coconut" ]
}
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?
有这个在快速控制-2组合框中没有内置机制(在写作,QT 5.9的时间),所以你必须自己做.像这样......
MyComboBox {
id: comboBox1
sizeToContents: false
model: [ "Banana", "Apple", "ThisIsTheLongestWordThatIHave", "Coconut" ]
}
MyComboBox {
id: comboBox2
anchors.top: comboBox1.bottom
sizeToContents: true
model: [ "Banana", "Apple", "ThisIsTheLongestWordThatIHave", "Coconut" ]
}
Run Code Online (Sandbox Code Playgroud)
ComboBox {
id: control
property bool sizeToContents
property int modelWidth
width: (sizeToContents) ? modelWidth + 2*leftPadding + 2*rightPadding : implicitWidth
delegate: ItemDelegate {
width: control.width
text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData
font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal
font.family: control.font.family
font.pointSize: control.font.pointSize
highlighted: control.highlightedIndex === index
hoverEnabled: control.hoverEnabled
}
TextMetrics {
id: textMetrics
}
onModelChanged: {
textMetrics.font = control.font
for(var i = 0; i < model.length; i++){
textMetrics.text = model[i]
modelWidth = Math.max(textMetrics.width, modelWidth)
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果你从一个QML列表改变模型类型,不同的类型,如C++ QStringList,QList<QObject*>或者QAbstractListModel,那么你migth需要修改此行textMetrics.text = model[i]来检索的方式略有不同从模型项目的文本.
| 归档时间: |
|
| 查看次数: |
2792 次 |
| 最近记录: |