2012-01-30 112 views
3

无数小时试图设计QComboBox的样式后,我被卡住插入项目的顶部和底部边距。风格QComboBox弹出菜单页边空白Qt 4

我想删除或应用背景颜色到弹出菜单顶部和底部的空白处。

QComboBox screen http://img576.imageshack.us/img576/3402/screenshot20120130at144.png

我添加了一个最小高度的而QListView不显示的顶部和底部的箭头。我也在Qt源代码中查看了QComboBoxPrivate类,但似乎上下边距都是硬编码的。

感谢您的帮助。

编辑:这是我的样式表到目前为止

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); 
} 
+0

你能后你有这么远的样式? – 2012-01-30 18:30:21

回答

0

我发现删除白边的解决方案是将组合框设置为只读。

QCombobox* choiceBox = new QCombobox; 
choiceBox->lineEdit()->setReadOnly(true); 
0

请尝试以下样式:

QComboBox { 
    margin-top: 0px; 
    margin-bottom: 0px; 
} 

这应该设置页边距为0。另外here是Qt的参考样式。

+0

它设置QCombobox的边距,而不是菜单的边界。 – Kikohs 2012-01-31 10:43:39

5

您需要定制QAbstractItemViewQComboBox

QComboBox QAbstractItemView { 
    margin-top: 0px; 
    padding-bottom: 0px; 
}