Мне просто нужно было выполнить эту работу самостоятельно. Я считаю, что поведение qss для строки заголовка QDockWidget по умолчанию является очень странным поведением.
В нижней части это конечный результат, который работает для меня, но сначала есть объяснения.
Прежде всего, использование параметра «изображение» для установки значка не позволяет установить размер значка, и оно заканчивается сокращением до минимума. Из-за этого я не мог использовать «titlebar-close-icon: none» так, как хотел.
Во-вторых, вы не сможете использовать настройку «изображение» для «QDockWidget :: close-button: hover» в паре с настройкой «titlebar-close-icon», поскольку изображение «hover» будет нарисован за значок. Вероятно, поэтому вы не видели ожидаемых результатов в приведенных примерах.
Что я в итоге делал внизу, устанавливал «пустой» (полностью прозрачный) png в качестве значка, а это значит, что я могу контролировать размер кнопки, используя настройку «Размер значка». Затем я установил «образ» для кнопок и использовал поднабор «hover» для обработки выделенного значка.
Наконец, я обнаружил, что (по крайней мере, в моей среде) изменения значка не вставляются, если виджет не плавает, а затем перебирается, и в это время значки присутствуют и учитываются. То, что я сделал, чтобы обойти это, было просто вызвать setFloating (True), а затем setFloating (False) после применения стиля. Там нет видимого мерцания или чего-то, что я вижу, поэтому я собираюсь с ним.
QDockWidget {
background: rgb(36,38,41);
titlebar-close-icon: url(:icons/blank.png);
titlebar-normal-icon: url(:icons/blank.png);
}
QDockWidget::title {
background: transparent;
color: transparent;
text-align: center;
border: none;
}
QDockWidget::close-button, QDockWidget::float-button {
border: none;
background: transparent;
icon-size: 12px;
padding: 1px;
}
QDockWidget::float-button {
image: url(:icons/undock.png);
}
QDockWidget::close-button {
image: url(:icons/close.png);
}
QDockWidget::float-button:hover {
image: url(:icons/undock_hover.png);
}
QDockWidget::close-button:hover {
image: url(:icons/close_hover.png);
}