QCombox本身样式可以使用样式表定制,例如:
QComboBox#pcdevicecombo{
border: 2px solid #323232;
background: #0F0F0F;
color: #C4C4C4;
}
QComboBox#pcdevicecombo::drop-down{
background: #323232;
width:26px;
}
QComboBox#pcdevicecombo::down-arrow {
image: url();
}
关于QCombox的下拉菜单说明文档中的做法:
border: 2px solid darkgray;
selection-background-color: lightgray;
}
但经过试验发现下拉菜单起不到作用,如何定制呢
QListWidget *list_widget = new QListWidget();
list_widget->setObjectName("pccombox");
m_pEditCombo->setModel(list_widget->model());
m_pEditCombo->setView(list_widget);
新建一个QListWidget,使用这个listWidget作为QComboBox的View,设置listWidget的样式,就改变了QComboBox的样式,QComboBox还是按照之前那样使用,添加item的方式也不变,但如果需要定制复杂样式,可以使用QListWidget添加自定义Widget实现复杂的QComboBox下拉样式。
这是上例中QListWidgte的样式:
QListView#pccombox{
border: 0px;
}
QListView#pccombox::item{
height:36px;
background: #131313;
color: #999999;
}
QListView#pccombox::item:hover{
background: #323232;
}
如此设置之后效果99%,但你会发现,下拉菜单hover项会有一圈虚线框,通过 list_widget->setEditTriggers(QAbstractItemView::NoEditTriggers);
list_widget->setFocusPolicy(Qt::NoFocus); 还是不能解决,方法就是在 QListWidget样式中加入
outline:0px;
最终结果
QListView#pccombox{
border: 0px;
outline:0px;
}效果100%