Настройка QComboBox

Я хочу настроить QComboBox. Поведение, которое я хотел бы видеть, представляет собой поле со списком, где его кнопка (стрелка вниз) занимает всю область поля со списком, когда оно свернуто. Я знаю, что QComboBox — это QPushButton с QListWidget (или каким-то другим виджетом). Я бы хотел изменить QPushButton, чтобы он занимал всю площадь. Я также хотел бы избавиться от области, в которой отображается текущий выбор. Любые советы будут оценены!

Вот что я хочу:

введите здесь описание изображения

Я могу контролировать ширину выпадающего списка через QComboBox::view()->setMinimumWidth(). Таким образом, я могу иметь более узкое поле со списком, но гораздо более широкий раскрывающийся список. Эта часть сделана. Теперь мне нужно просто иметь кнопку там.


person aalimian    schedule 29.06.2018    source источник


Ответы (2)


Настройка кнопки QComboBox, на самом деле стрелка вниз, может быть выполнена с помощью стиля, используя стиль down-arrow, однако, поскольку вам нужно, чтобы выделение было невидимым, вам нужно позаботиться о других настройках, ширине поле со списком и drop-down, вероятно, должны точно соответствовать вашему изображению, пример стиля для этого:

QComboBox::down-arrow {
    image: url(arrow.png); /* Set combobox button */
}

QComboBox::drop-down {
    width: 20px;  /* set the width of the drop down */
}

QComboBox {
    border: 0px;
    max-width: 20px; /* width of whole box */
}
person Mohammad Kanan    schedule 29.06.2018
comment
Спасибо за ваш комментарий. Я только что понял это сам. У меня были проблемы с перемещением изображения, но я смог добиться этого с помощью свойств left и top, задав им отрицательные значения. - person aalimian; 30.06.2018

Хорошо, так что это очень возможно с помощью таблиц стилей. Вот что я сделал:

QComboBox::setStyleSheet(
QComboBox::down-arrow {
image: url(:/images/add_support_combo_box.png);
left: -50px;
top: -10px;
width: 500px;
height : 200px;}");

Если вы видите, что «слева» и «сверху» имеют отрицательные значения. Это заставляет изображение стрелки вниз двигаться влево и вверх.

person aalimian    schedule 29.06.2018
comment
Отлично, пробую с настройками left и top, у меня не скрывает выделение, может все дело в самом изображении - person Mohammad Kanan; 30.06.2018