Qt qml中的组合框样式

Qt qml中的组合框样式,qt,qml,Qt,Qml,我想做一个好看的组合框。我用这个作为背景。这是我的密码: import QtQuick 2.0 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import QtQuick.Controls.Private 1.0 ComboBox { id: box currentIndex: 2 activeFocusOnPress: true style: ComboBoxStyle {

我想做一个好看的组合框。我用这个作为背景。这是我的密码:

import QtQuick 2.0
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Controls.Private 1.0

ComboBox
{
    id: box
    currentIndex: 2
    activeFocusOnPress: true
    style: ComboBoxStyle {
    id: comboBox
    background: Rectangle {
        id: rectCategory
        color: "transparent"
        border.width: 1
        border.color: "white"
        radius: 15
    }
    label: Text {
        verticalAlignment: Text.AlignVCenter
        horizontalAlignment: Text.AlignHCenter
        font.pointSize: 15
        font.family: "Courier"
        font.capitalization: Font.SmallCaps
        color: "white"
        text: control.currentText
    }

    // drop-down customization here
    property Component __dropDownStyle: MenuStyle {
        __maxPopupHeight: 600
        __menuItemType: "comboboxitem"

        frame: Rectangle {              // background
            color: "green"
            border.width: 1
            border.color: "white"
            radius: 15
        }
        padding.top: 12
        padding.bottom: 12

        itemDelegate.label:             // an item text
            Text
            {
                verticalAlignment: Text.AlignVCenter
                horizontalAlignment: Text.AlignHCenter
                font.pointSize: 15
                font.family: "Courier"
                font.capitalization: Font.SmallCaps
                color: "white"
                text: styleData.text
            }

        itemDelegate.background: Rectangle {  // selection of an item
            radius: 5
            color: styleData.selected ? "#1fcecb" : "transparent"
        }

        __scrollerStyle: ScrollViewStyle { }
    }

    property Component __popupStyle: Style {
        property int __maxPopupHeight: 400
        property int submenuOverlap: 100

        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
}
结果如下

现在我有几个问题:

  • 如何去除白色角落?我希望所有的角落都是圆的
  • 如何去除大矩形下的阴影?右下角
  • 是否有可能在下拉菜单和上面的文本矩形之间留一个间隙

是否需要使用QtQuick.Controls 1.x而不是2.0。只是,也许从一开始就专注于新的/更好的技术会更好,而不是先用过时的东西使一切变得完美,然后再把它扔掉。。。如果需要1.x-好的。首先,1)自定义新的
组合框
,2)在自定义中使用私有API,这总是不好的,即使是像快速控件这样的“死”模块。@BaCaRoZzo我的项目正在使用qt 5.6。有没有办法使用Qt5.6中的控件的第二个版本,或者我应该移动到5.7?我只是没有时间移动,如果有任何方法可以解决我的问题,使用第1版的控制,这将是伟大的!好的,这取决于你的要求。新控件可在5.6中用作“实验室控件”,请参阅。这个版本并不是最终版本,但我发现它已经从bug中变得非常完美。如果您没有具体的约束条件,我会选择5.7,但请注意1)放弃对Android<4.1的支持,2)放弃对iOS<7的支持,3)放弃对编译器不完全支持C++11的平台的支持(请参阅。至于解决问题,嗯,在最初回答时,我确实花了几分钟试图解决问题。你可以检查原始样式。我已经从那里开始写我的其他答案。我想说,试图解决这个问题所花费的时间超过了移植项目所需的时间。我的两分钱。是我们需要使用QtQuick.Controls 1.x而不是2.0。只是,也许从一开始就专注于新的/更好的技术会更好,而不是先用过时的东西使一切变得完美,然后再扔掉……如果需要1.x-好的。首先,1)在自定义中自定义新的
组合框
和2)您使用的私有API总是不好的,即使是像快速控件这样的“死”模块。@BaCaRoZzo我的项目正在使用qt 5.6。有没有办法使用Qt5.6中的控件的第二个版本,或者我应该移动到5.7?我只是没有时间移动,如果有任何方法可以解决我的问题,使用第1版的控制,这将是伟大的!好的,这取决于你的要求。新控件可在5.6中用作“实验室控件”,请参阅。这个版本并不是最终版本,但我发现它已经从bug中变得非常完美。如果您没有具体的约束条件,我会选择5.7,但请注意1)放弃对Android<4.1的支持,2)放弃对iOS<7的支持,3)放弃对编译器不完全支持C++11的平台的支持(请参阅。至于解决问题,嗯,在最初回答时,我确实花了几分钟试图解决问题。你可以检查原始样式。我从那里开始写我的其他答案。我想说,试图解决这个问题所花费的时间超过了移植项目所需的时间。我的两分钱。