diff --git a/widgets/DapComboBox.qml b/widgets/DapComboBox.qml index 3e6a0d8354d050eed76402631b1810d9a3171d84..ee809d5ea2bd8dd9614d5a48123e4b9d0ea559ee 100644 --- a/widgets/DapComboBox.qml +++ b/widgets/DapComboBox.qml @@ -55,6 +55,7 @@ DapComboBoxForm ) height: rectangleTextComboBox.height spacing: roleInterval + property var elTextArray: [] Repeater { @@ -77,36 +78,43 @@ DapComboBoxForm horizontalAlignment: (alignTextComboBox.length > index) ? alignTextComboBox[index] : alignTextComboBox[0]; - + onElTextChanged: textRow.elTextArray[index] = elText Component.onCompleted: { - comboBoxFontMetric.font = (fontComboBox.length > index) ? - fontComboBox[index] : - fontComboBox[0]; if(rectangleTextComboBox.comboBoxIndex == rectangleTextComboBox.comboBoxCurrentIndex) - { - var tmp = mainRow; - tmp[index] = elText; - mainRow = tmp; - - if(rectangleTextComboBox.comboBoxCurrentIndex != -1) - { - if(index == 0) - mainLineText = comboBoxFontMetric.elidedText(fullText, Text.ElideRight, rectangleTextComboBox.width, Qt.TextShowMnemonic); - } - } + { + + var tmp = mainRow; + tmp[index] = elText; + mainRow = tmp; + + if(index == 0) + { + comboBoxFontMetric.font = (fontComboBox.length > index) ? + fontComboBox[index] : + fontComboBox[0]; + mainLineText = comboBoxFontMetric.elidedText(fullText, Text.ElideRight, rectangleTextComboBox.width, Qt.TextShowMnemonic); + } + } } } } + } + Component.onCompleted: + { + if(rectangleTextComboBox.comboBoxCurrentIndex !== -1) + updateMainRow(comboBoxFontMetric, rectangleTextComboBox.comboBoxIndex, rectangleTextComboBox.comboBoxCurrentIndex, textRow.elTextArray, (widthPopupComboBoxNormal - indicatorWidth - indicatorLeftInterval)); + } onComboBoxCurrentIndexChanged: { - mainLineText = comboBoxFontMetric.elidedText(getModelData(currentIndex, comboBoxTextRole[0]), Text.ElideRight, rectangleTextComboBox.width, Qt.TextShowMnemonic); - console.log("mainLineText", mainLineText) + if(rectangleTextComboBox.comboBoxCurrentIndex !== -1) + updateMainRow(comboBoxFontMetric, rectangleTextComboBox.comboBoxIndex, rectangleTextComboBox.comboBoxCurrentIndex, textRow.elTextArray, rectangleTextComboBox.width); + } } @@ -117,7 +125,8 @@ DapComboBoxForm Rectangle { anchors.fill: parent - anchors.bottomMargin: { + anchors.bottomMargin: + { if(index == count - 2) { if(index+1 == currentIndex) @@ -140,5 +149,24 @@ DapComboBoxForm return model.get(rowIndex)[modelRole]; } + function updateMainRow(fm, cbIndex, cbCurrentIndex, elTextArray, width) + { + if(cbIndex === cbCurrentIndex) + { + for(var i = 0; i < comboBoxTextRole.length; i++) + { + fm.font = (fontComboBox.length > i) ? + fontComboBox[i] : + fontComboBox[0]; + + var tmp = mainRow; + tmp[i] = elTextArray[i]; + mainRow = tmp; + + if(i == 0) + mainLineText = fm.elidedText(getModelData(cbCurrentIndex, comboBoxTextRole[0]), Text.ElideRight, width, Qt.TextShowMnemonic); + } + } + } } diff --git a/widgets/DapComboBoxForm.ui.qml b/widgets/DapComboBoxForm.ui.qml index b063a2b9d4030699077d21389b34d7f5ae8ebe49..fab312f719112a6c1e04dcd830132582a58a142f 100644 --- a/widgets/DapComboBoxForm.ui.qml +++ b/widgets/DapComboBoxForm.ui.qml @@ -1,5 +1,5 @@ import QtQuick 2.0 -import QtQuick.Controls 2.2 +import QtQuick.Controls 2.0 import QtQuick.Controls.Styles 1.4 import QtGraphicalEffects 1.0 @@ -135,10 +135,13 @@ ComboBox { anchors.verticalCenter: parent.verticalCenter text: (popup.visible) ? - mainRow[index] : + (index < mainRow.length ? mainRow[index] : ""): mainLineText - font: (fontComboBox.length > index) ? + font: popup.visible ? + ((fontComboBox.length > index) ? fontComboBox[index] : + fontComboBox[0] + ) : fontComboBox[0]; width: popup.visible ? (topComboBoxRow.width - roleInterval * (comboBoxTextRole.length - 1)) / comboBoxTextRole.length : @@ -165,6 +168,7 @@ ComboBox contentItem: ListView { + id: popupList clip: true implicitHeight: contentHeight model: dapComboBox.popup.visible ? dapComboBox.delegateModel : null