वर्तमान सार्वजनिक API का ड्रॉप-डाउन मेनू के अनुकूलन कहा गया है here अनुमति नहीं है। Qt 5.4
, यानी Styles 1.3
, फोंट और टेक्स्ट (दस्तावेज़ here) को अनुकूलित करने के लिए बस कुछ गुण प्रस्तुत किए हैं, लेकिन अभी भी ड्रॉप-डाउन अनुकूलन के लिए कोई सार्वजनिक पहुंच नहीं है।
इसके अलावा, लिंक में प्रदान किया गया उदाहरण Qt के नए संस्करणों के साथ काम नहीं करता है। यहाँ एक संशोधित संस्करण मैं क्यूटी 5.3 के साथ परीक्षण किया गया है, क्यूटी 5.4 और क्यूटी 5.5 (आयात के लिए import QtQuick.Controls.Private 1.0
जोड़ने के लिए याद):
ComboBox {
id: box
currentIndex: 2
activeFocusOnPress: true
style: ComboBoxStyle {
id: comboBox
background: Rectangle {
id: rectCategory
radius: 5
border.width: 2
color: "#fff"
}
label: Text {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
font.pointSize: 15
font.family: "Courier"
font.capitalization: Font.SmallCaps
color: "black"
text: control.currentText
}
// drop-down customization here
property Component __dropDownStyle: MenuStyle {
__maxPopupHeight: 600
__menuItemType: "comboboxitem"
frame: Rectangle { // background
color: "#fff"
border.width: 2
radius: 5
}
itemDelegate.label: // an item text
Text {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
font.pointSize: 15
font.family: "Courier"
font.capitalization: Font.SmallCaps
color: styleData.selected ? "white" : "black"
text: styleData.text
}
itemDelegate.background: Rectangle { // selection of an item
radius: 2
color: styleData.selected ? "darkGray" : "transparent"
}
__scrollerStyle: ScrollViewStyle { }
}
property Component __popupStyle: Style {
property int __maxPopupHeight: 400
property int submenuOverlap: 0
property Component frame: Rectangle {
width: (parent ? parent.contentWidth : 0)
height: (parent ? parent.contentHeight : 0) + 2
border.color: "black"
property real maxHeight: 500
property int margin: 1
}
property Component menuItemPanel: Text {
text: "NOT IMPLEMENTED"
color: "red"
font {
pixelSize: 14
bold: true
}
}
property Component __scrollerStyle: null
}
}
model: ListModel {
id: cbItems
ListElement { text: "Banana" }
ListElement { text: "Apple" }
ListElement { text: "Coconut" }
}
width: 200
}
यहाँ __dropDownStyle
एक MenuStyle
प्रकार के साथ सौंपा गया है। इस प्रकार के कुछ गुण वांछित शैली प्राप्त करने के लिए अनुकूलित किए जाते हैं, विशेष रूप से itemDelegate
(जो combobox के अंदर किसी आइटम की उपस्थिति को परिभाषित करता है) और frame
(समग्र पृष्ठभूमि)। अधिक जानकारी के लिए जुड़े MenuStyle
एपीआई देखें। कुल मिलाकर परिणाम:
ध्यान दें कि इस दृष्टिकोण पूरी तरह से विंडोज और Android पर काम करता है, जबकि पर OSX कोड है पूरी तरह से नजरअंदाज कर दिया। क्यूटी स्थापना के अंदर qml स्टाइल फ़ाइल की जांच कर सकते हैं (qml/QtQuick/Controls/Styles/Desktop
जैसे सबपैथ की खोज करें) यह देखने के लिए w.r.t. विंडोज़ और प्रदान किए गए समाधान को अनुकूलित करने का प्रयास करें। यह हिस्सा पाठक को छोड़ दिया गया है।
मैं सिर्फ मैक ओएस एक्स 10.9 पर इस कोड का परीक्षण किया और सोचा कि यह है कि यह मेरे लिए काम नहीं कर रहा देख सकते है। क्या आप इसे काम करने के लिए कुछ ओएस एक्स संबंधित संपादन सुझा सकते हैं। फिर भी, विंडोज प्लेटफ़ॉर्म पर सबकुछ ठीक है। –
ठीक है, मैंने उस समय केवल विंडोज/एंड्रॉइड पर कोड की कोशिश की, क्षमा करें। :) आप क्यूटी स्थापना के अंदर qml शैली फ़ाइल ('qml/qtQuick/Controls/शैलियों/डेस्कटॉप' जैसे उपपथ के लिए खोज) देख सकते हैं ताकि w.r.t. में परिवर्तन क्या हो। विंडोज़ और समाधान को अनुकूलित करने का प्रयास करें। मेरी ओर से मैं इस विशिष्ट मुद्दे को संबोधित करने के लिए एक संपादन प्रदान करने के लिए अपने मैक पर कोड का परीक्षण करूंगा (जाहिर है क्योंकि मेरे पास खाली समय है)। – BaCaRoZzo
यह बहुत ही अविश्वसनीय रूप से सहायक है! धन्यवाद! –