2012-01-30 12 views
3

После бесчисленных часов, пытающихся создать QComboBox, я застрял с верхним и нижним полем, где вставлены элементы.Поля всплывающего меню QComboBox Qt 4

Я хотел бы удалить или применить фоновый цвет к всплывающему меню верхнего и нижнего пробелов.

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

Я добавил мин-высоту в QListView не показывать верхние и нижние стрелки. Я также посмотрел класс QComboBoxPrivate в источниках Qt, но кажется, что верхнее и нижнее поля жестко закодированы.

Благодарим за помощь.

Edited: Это моя таблица стилей до сих пор

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

Вы можете разместить таблицу стилей у вас есть до сих пор? –

ответ

0

Решение, которое я нашел для удаления белого поля, состоит в том, чтобы установить выпадающий список только для чтения.

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

Попробуйте следующую таблицу стилей:

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

Это должно установить поля 0. Также here является кварты ссылки на таблицы стилей.

+0

Он устанавливает поля QCombobox, а не поля внутри. – Kikohs

5

Вам нужно настроить QAbstractItemView в QComboBox:

QComboBox QAbstractItemView { 
    margin-top: 0px; 
    padding-bottom: 0px; 
} 
Смежные вопросы