Да, вы можете использовать border-image
.
Этот ответ относится только к CSS, но реализация Qt очень хорошо соответствует спецификациям CSS: https://stackoverflow.com/a/26858151
Короче говоря, вы создаетемаленькое квадратное png-изображение с намеченными границами (в вашем случае вам нужно будет создать только правильную пунктирную часть, размер зависит от нужного вам штрихового шаблона.
К сожалению, при использовании закругленных углов Qt "обрезает «половину ширины границы, так что вы увидите небольшой разрыв за пределами границы между двумя соседними вкладками.
Я создал небольшой пример изображения, которое будет иметь шаблон 6 пикселей черного цветаи 5 прозрачных (я забыл стереть верхние 2 пикселя, они вам не понадобятся):
![border-image source example](https://i.stack.imgur.com/PQQyP.png)
Так выглядит при увеличенииредактор изображений:
![border-image source zoomed](https://i.stack.imgur.com/3UKOO.png)
После этого вам понадобится в качестве основы для вашей таблицы стилей:
QTabBar:Tab {
border-top-right-radius: 14px;
border-top-left-radius: 14px;
border-image: url(border.png) 2 repeat;
padding: 2px;
}
QTabBar:Tab:!Selected {
border-right: 2px;
}
"2" в объявлении изображения границы является шириной границы в пределах Для изображения Qt требуется, чтобы сказать Qt, что шаблон границы должен быть повторен, а не растянут.Кроме того, не забудьте также задать ширину границы, иначе изображение не будет отображаться.
И вот результат:
![border-image result](https://i.stack.imgur.com/G3wfs.png)
Как видите, размер рамки составляет всего 1 пиксель, при этом еще один пиксель остается за пределами вкладки.Поскольку проблема возникает из-за использования закругленных углов, я боюсь, что единственным решением будет создание изображения с полными границами, которое включает закругленные углы.Я пытался поиграть с отрицательными полями и позицией CSS, думаю, что это не сработает, как ожидалось, и может даже создать проблемы с различными платформами и версиями Qt.