LINUX.ORG.RU

QComboBox

 ,


0

1

Подскажите как изменить у данного виджета размер вертикального бокового слайдера. И вообще как менять элементы форм стандартных виджетов?

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Подозреваю QProxyStyle, subControlRect или subElementRect или pixelMetric... где-то там :)

zJes ★★
()

Добавь ему в Style sheet что то вроде этого

QScrollBar {
     border: none;
     height: 6px;
     width: 6px;
     margin: 0px;
}

Вообще через css можно до неузнаваемости изменить внешний вид.

Tweaker ★★★★☆
()
Последнее исправление: Tweaker (всего исправлений: 1)
Ответ на: комментарий от zJes

вроде как не всегда хорошо смотрится если другой стиль используешь вроде win-like.

splinter ★★★★★
() автор топика
Ответ на: комментарий от zJes

А если только для комбобокса?

Можно через setObjectName() задать имя для скролбара, а потом в qss писать

QScrollBar#myScrollBar{
...
}

akinator ★★
()
Ответ на: комментарий от akinator

Как ты в комплексном контроле задашь имя для сабконтрола - скролбара?
Который, если мне не изменяет память, аж на 3 уровне вложенности.
Цсс хорош, если делать только легкую кастомизацию - иначе как писали будет мотиф (или вин стиль) и/или танцы с бубном.

zJes ★★
()
Ответ на: комментарий от zJes

Как ты в комплексном контроле задашь имя для сабконтрола - скролбара?

comboBox->view()->verticalScrollBar()->setObjectName("name");

Ну да выглядит не очень красиво.

akinator ★★
()
Ответ на: комментарий от akinator

:) Замечательно. Я имел ввиду в дизайнере (не будем же цсс привязывать к коду) :)
Я лучше с прокси стилем, чем так пихать в каждной форме. :)

zJes ★★
()
Последнее исправление: zJes (всего исправлений: 1)
Ответ на: комментарий от zJes

Да, конечно, не будет работать, скроллбар ведь у вложенного itemview. Правильно будет без >, так как > относится только к детям первого уровня.

QComboBox QScrollBar {
...
}

Tweaker ★★★★☆
()
Ответ на: комментарий от Tweaker

Ну в общем да, соглашусь, в данном случае сработает.Тогда как к знающему, как изменить иконку и размер scroll arrows через цсс, у меня вот никак не получилось, кроме как стиль. :(

zJes ★★
()
Ответ на: комментарий от Tweaker

Ну гуглить то ты умеешь :)
Попробуй поменять иконку списка хотя бы на самом комбо, но чтобы стиль не слетел. И на скролбаре, что-то не получилось поменять, без раскурочивания всего скрола :(
Хотя и 5.1.

zJes ★★
()
Ответ на: комментарий от zJes

На комбо поменялся без проблем:

QComboBox::drop-down {
	image: url(f:/arrow.png);
	padding: 2;
}
А вот со скроллбаром действительно что-то странное.
  QScrollBar:vertical {
    border: 0px;
    margin: 22px 0 22px 0;
  }
  QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
      image: url(f:/arrow.png);
  }
Во первых слетает стиль, во вторых рисуется только верхняя стрелка, И без указания бордера у скроллбара не рисуется вообще ничего. Картинка.

Tweaker ★★★★☆
()
Последнее исправление: Tweaker (всего исправлений: 1)
Ответ на: комментарий от Tweaker

На комбо поменялся без проблем:

Хм... у меня у самой кнопки слетел стиль. Вместо градиента и тд, выглядит инородно, а-ля привет мотиф.
В прокси стиле ты можешь менять все это, но не ломая текущий стиль. Причем делая достаточно свободно, почти без ограничений.

zJes ★★
()
Последнее исправление: zJes (всего исправлений: 1)
Ответ на: комментарий от zJes

Хм... у меня у самой кнопки слетел стиль.

ну он слететь от любого чиха может.

Сейчас проверил под онтопиком. В qt4 иконка устанавливается только для dropdown arrow, стиль не ломает.

В Qt5 со стандартным стилем Fusion имеет комбобокс в стиле GTK+ (на весь экран), иконка для up-down arrow не устанавливается. Со стилем Windows устанавливается, стиль не ломается, т.к. изначально выглядит как говно.

Tweaker ★★★★☆
()

Сделай свой комбобокс, с б. и ш.

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.