样式 QComboBox 弹出菜单边距 Qt 4 [英] Style QComboBox popup menu margin Qt 4
问题描述
在尝试设计 QComboBox 样式的无数小时后,我被插入项目的顶部和底部边距卡住了.
After countless hours trying to style a QComboBox, I'm stuck with the top and bottom margin where the items are inserted.
我想移除或应用背景颜色到弹出菜单顶部和底部的空白区域.
I would like to either remove or apply a background-color to the popup menu top and bottom white spaces.
QComboBox 屏幕 http://img576.imageshack.us/img576/3402/screenshot20140130at1.png
我向 QListView 添加了一个 min-height 以不显示顶部和底部箭头.我还查看了 Qt 源代码中的 QComboBoxPrivate 类,但似乎顶部和底部边距是硬编码的.
I added a min-height to the QListView not to show top and bottom arrows. I also looked at the QComboBoxPrivate class in Qt sources but it seems that the top and bottom margins are hardcoded.
感谢您的帮助.
已到目前为止,这是我的样式表
Edited: This is my stylesheet so far
QComboBox {
border: 1px solid rgb(95, 95, 95);
border-radius: 3px;
padding: 1px 18px 1px 3px;
min-width: 6em;
color: rgb(220, 220, 220);
background-color: rgb(80, 80, 80);
margin: 0 0 0 0;
}
QComboBox:editable {
background: rgb(80, 80, 80);
}
QComboBox:!editable {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 rgb(51, 51, 51), stop: 0.4 rgb(39, 39, 39),
stop: 0.5 rgb(32,32,32), stop: 1.0 rgb(38,38,38));;
}
QComboBox::drop-down:editable {
}
QComboBox:!editable:on {
}
QComboBox::drop-down:editable:on {
}
QComboBox:on { /* shift the text when the popup opens */
padding-top: 3px;
padding-left: 4px;
background-color: rgb(80, 80, 80);
}
QComboBox::drop-down {
subcontrol-origin: padding;
subcontrol-position: center right;
width: 15px;
right:3px;
border-top-right-radius: 3px; /* same radius as the QComboBox */
border-bottom-right-radius: 3px;
background:none;
}
QComboBox::down-arrow {
image: url(:/images/arrow-down-inverted.png);
height: 10px;
}
QComboBox::down-arrow:on { /* shift the arrow when popup is open */
top: 1px;
left: 1px;
}
QListView#comboListView {
background: rgb(80, 80, 80);
color: rgb(220, 220, 220);
min-height: 90px;
margin: 0 0 0 0;
}
QListView#comboListView::item {
background-color: rgb(80, 80, 80);
}
QListView#comboListView::item:hover {
background-color: rgb(95, 95, 95);
}
推荐答案
我找到的去除白边的解决方案是将组合框设置为只读.
The solution I found to remove the white margin is to set the combobox to read-only.
QCombobox* choiceBox = new QCombobox;
choiceBox->lineEdit()->setReadOnly(true);
这篇关于样式 QComboBox 弹出菜单边距 Qt 4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!