关于QComboBox你不知道的那些事!

关于QComboBox的基本应用、代理设置已经讲过,也足以应对QComboBox的应用,使用QComboBox,往往需要可编辑(combo_box->setEditable(true)),当然美化环节必不可少,细心的人也许会发现一些问题!今天在这里再次吐槽,关于QComboBox你不知道的那些事!

    设置样式:
QComboBox{
border-radius:2px;
border:1px solid gray;
}
QComboBox:hover{
border-radius: 3px;
border-width:2px;
border-color:rgb(50, 180, 250);
}
QComboBox::down-arrow{
image:url(:/login/arrow_down);
}
QComboBox::drop-down{
width:20px;
border-left:1px solid gray;
background:transparent;
}
QComboBox::drop-down:hover{
border-left:1px solid lightgray;
background:rgb(220, 240, 250);
}

    使用combo_box->setEditable(true)之前:
normal:
关于QComboBox你不知道的那些事!
hover:
关于QComboBox你不知道的那些事!


    使用combo_box->setEditable(true)之后:
normal:
关于QComboBox你不知道的那些事!
hover:
关于QComboBox你不知道的那些事!

      好的,再看这段代码:
QComboBox:hover{
border-radius: 3px;
border-width:2px;
border-color:rgb(50, 180, 250);
}
      既然,鼠标滑过QComboBox的边框宽度变为2px,那么为什么只有右边下拉按钮部分变为2px,左边却为1px。想来想去,是不是很不符合常理!再仔细想想,样式的变化是由combo_box->setEditable(true)的出现引起的,那么,这句话的影响的本质是什么呢?

      不妨加上这段代码试试:
combo_box->lineEdit()->setStyleSheet("border:1px solid red;");
      效果如下:
关于QComboBox你不知道的那些事!

      那么,如何做到可编辑又不影响效果呢?
      分析:既然QComboBox可编辑之后,QComboBox的边框只有1px,那么另外的1px,则可由 combo_box->lineEdit()来弥补!添加 combo_box->lineEdit()->setStyleSheet("margin:1px; border:0px;")即可。
关于QComboBox你不知道的那些事!
      总结:当使用 combo_box->setEditable(true)之后,QLineEdit被激活,既然被激活那么也注定 combo_box->lineEdit() 拥有QLineEdit的一切,为什么呢?因为 combo_box->lineEdit()原本就是QLineEdit ,不多解释!相应的QComboBox的样式也会受到相应的影响,当然解决问题的过程才是最美好的。。。
    
   上面的分析主要是了解QComboBox的机制原理。。。更简单的办法是通过使用padding来解决问题:
QComboBox{
      border-radius:2px;
      border:1px solid  gray
      padding:2px;    
}

注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值