moonlight-qt/app/gui/AutoResizingComboBox.qml

47 lines
1.3 KiB
QML
Raw Normal View History

import QtQuick 2.9
import QtQuick.Controls 2.2
import SdlGamepadKeyNavigation 1.0
// https://stackoverflow.com/questions/45029968/how-do-i-set-the-combobox-width-to-fit-the-largest-item
ComboBox {
property int textWidth
property int desiredWidth : leftPadding + textWidth + indicator.width + rightPadding
property int maximumWidth : parent.width
implicitWidth: desiredWidth < maximumWidth ? desiredWidth : maximumWidth
TextMetrics {
2018-10-06 19:41:55 +00:00
id: popupMetrics
}
2018-10-06 19:41:55 +00:00
TextMetrics {
id: textMetrics
}
2020-11-24 06:13:39 +00:00
function recalculateWidth() {
textMetrics.font = font
popupMetrics.font = popup.font
textWidth = 0
for (var i = 0; i < count; i++){
textMetrics.text = textAt(i)
2018-10-06 19:41:55 +00:00
popupMetrics.text = textAt(i)
textWidth = Math.max(textMetrics.width, textWidth)
textWidth = Math.max(popupMetrics.width, textWidth)
}
}
2020-11-24 06:13:39 +00:00
// We call this every time the options change (and init)
// so we can adjust the combo box width here too
onActivated: recalculateWidth()
popup.onAboutToShow: {
// Switch to normal navigation for combo boxes
SdlGamepadKeyNavigation.setUiNavMode(false)
}
popup.onAboutToHide: {
SdlGamepadKeyNavigation.setUiNavMode(true)
}
}