QComboBox颜色下拉美化

简单美化QComboBox,效果如图:
在这里插入图片描述
样式:

ColorComboBox::ColorComboBox(QWidget *parent):QComboBox(parent)
{
    setStyleSheet("QComboBox { border:2px solid gray; \
                                border-radius:5px 5px 5px 5px; \
                                text-align: right;font-size: 14px;font-weight: bold;font-size:16px; } \
        QComboBox::drop-down  {width:50px;background: transparent;} \
        QComboBox::down-arrow {image: url(:/images/icons/down_arrow.png);}");

}

控件初始化:

void ColorComboBox::updateCtrls()
{
    this->clear();

    //根据缩放比例获取宽高
    int w = qRound(width()*widthScale);
    int h = qRound(height()*heightScale);

    QPixmap pix(w,h);
    setIconSize(QSize(pix.width(),pix.height()));

    QStringList clrNames = QColor::colorNames();
    foreach(auto clr,clrNames){
        pix.fill(clr);
        addItem(QIcon(pix),clr);
    }
}
### 回答1: 可以通过设置QComboBox的样式表来隐藏下拉箭头。具体方法如下: 1. 打开Qt Designer,选中需要隐藏下拉箭头的QComboBox控件。 2. 在属性编辑器中找到“styleSheet”属性,点击右侧的编辑按钮。 3. 在弹出的样式表编辑器中,输入以下代码: QComboBox::drop-down { width: px; } 4. 点击“确定”保存样式表,然后重新运行程序即可看到QComboBox下拉箭头已经被隐藏了。 注意:这种方法只是隐藏了下拉箭头,但是QComboBox仍然可以正常使用。如果需要完全禁用QComboBox下拉功能,可以通过设置setEnabled(false)来实现。 ### 回答2: Qt中的QComboBox下拉框控件默认显示一个下拉箭头,但是有时候我们想要隐藏这个箭头,此时可以通过设置QComboBox的样式表来实现。 首先,在QComboBox对象的样式表中,使用“QComboBox::drop-down”选择器来选择下拉箭头,然后将其visibility属性设置为hidden,即可隐藏下拉箭头。 下面是一个简单的示例代码: ```cpp QComboBox *comboBox = new QComboBox(this); comboBox->setStyleSheet("QComboBox::drop-down{width: 0px;}"); ``` 上面的代码将下拉箭头的宽度设置为0,从而实现了隐藏下拉箭头的效果。如果需要将箭头换成其它的图标,也可以通过设置background-image属性来实现。 需要注意的是,样式表对QComboBox下拉框内部的QAbstractItemView(即选项列表)也生效,因此需要将“QComboBox::drop-down”选择器限制在QComboBox对象内部,避免影响到选项列表。可以使用“QComboBox#comboBoxName::drop-down”选择器来实现。 ```cpp QComboBox#comboBoxName::drop-down{width: 0px;} ``` 最后需要提醒的是,样式表虽然提供了很大的灵活性,但是对性能会有一定的影响,并且使用不当也可能导致一些副作用。因此,在使用样式表时,需要谨慎考虑是否真的需要使用,并且合理使用样式表。 ### 回答3: Qt提供了各种控件供我们使用,其中一个非常常用的控件就是QComboBox。但是有些时候,我们希望隐藏QComboBox中的下拉箭头,这样就可以自定义下拉按钮,让这个控件更加与自身风格相符。 我们可以通过一些简单的代码来实现这个目的。在设置QComboBox的样式之前,我们应该首先确定我们要隐藏哪个箭头。通常情况下,我们希望隐藏下拉箭头,所以我们可以将其ID设置为QComboBox::down-arrow。 接下来,我们就可以使用QSS(Qt Style Sheet)来设置QComboBox的样式。具体的实现方法如下: ``` QComboBox QAbstractItemView { border: 1px solid gray; selection-background-color: lightgray; } QComboBox::drop-down { border-width: 0px; subcontrol-origin: padding; subcontrol-position: top right; width: 15px; height: 15px; } QComboBox::down-arrow { image: none; } ``` 以上QSS代码中,第一个块是设置下拉列表选项框的样式,第二个块是设置下拉按钮的样式,第三个块就是隐藏了下拉箭头。 具体地讲,我们将下拉列表选项框的边框设置为1px的灰色实线,选择项的背景颜色设置为浅灰色。对于QComboBox下拉按钮,我们将其边框宽度设置为0,将其相对于QComboBox的边框以及左侧内边距(padding)的位置设置为右上角,将下拉按钮的宽度和高度设置为15px。最后,通过将QComboBox::down-arrow的背景图像属性设置为none,来隐藏下拉箭头。 当然,在实现时,我们可以根据自己的需要,更改上述代码中的属性值,以样式来满足自己的要求。 总之,通过这种方法,我们就可以很轻松地隐藏QComboBox下拉箭头,而不影响该控件的其他样式和功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值