Как получить текущий отступ виджета? - PullRequest
0 голосов
/ 23 сентября 2019

Я знаю, как настроить свойство отступа виджета:

widget.setStyleSheet("padding: 5px 5px 5px 5px");

или

widget.setStyleSheet("padding: 5px");

, который выполняет одинаковое заполнение всех сторон.

Но как мне получить текущий отступ?Я не вижу пути к qDebug() << padding.

. Если вариант использования имеет значение, у меня есть вертикальная компоновка с тремя полями со списком, я уже установил поля содержимого компоновки на ноль и пространство вокруг компонента исчезло.Но между полями со списком все еще есть вертикальное пространство.

QWidget *widget = new QWidget;
QVBoxLayout *vLayout = new QVBoxLayout(widget);
vLayout->setContentsMargins(0,0,0,0);

vLayout->addWidget(new QComboBox);
vLayout->addWidget(new QComboBox);
vLayout->addWidget(new QComboBox);

QToolBar *toolbar = new QToolBar;
toolbar->addWidget(widget);
addToolBar(toolbar);

enter image description here

И, установив вертикальное пространство в макете, я получаю:

enter image description here

Ссылка: https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qcombobox

1 Ответ

0 голосов
/ 23 сентября 2019

Установка таблицы стилей не меняет фактические поля любым способом, который вы можете запросить.Активный QStyle контролирует окончательный вид виджета, который в данном случае равен QStylesheetStyle, и устанавливает поля / и т. Д. При рисовании элемента.Проанализированный CSS не доступен нигде, кроме QStylesheetStyle внутренних компонентов.

ДОБАВЛЕНО на основе последующего комментария:

Официального способа доступа нет QStylesheetStyle, это полностью приватно в Qt.Но даже если вы действительно хотите использовать детали widgets-private, информация все еще находится глубоко внутри личных данных QStylesheetStyle ... Я не уверен, что вы сможете получить ее, даже если вы загрузили qstylesheetstyle_p.h, потому что многоданных (и методов для извлечения их частей) просто в самом файле CPP.

Если вы действительно хотите копаться в этом ... https://code.woboq.org/qt5/qtbase/src/widgets/styles/qstylesheetstyle.cpp.html (вы можете увидеть прямо тамявляются определениями в CPP, которые необходимы для обработки CSS и выполнения любых поисков, например, перечисление PseudoElement вверху)

ADDED в ответ на отредактированный вопрос:

Это интервал по умолчанию QVBoxLayout, добавляющий дополнительные отступы.Добавьте:

vLayout->setSpacing(0); (или любой другой отступ между элементами)

enter image description here

...