101 Руководство по взлому отступов для таблиц стилей Qt в C ++. Установка отступов не работает

После нескольких месяцев исследований и расспросов, я нашел решение, чтобы сделать поля равными 0, а отступы — 0, стилизовать виджет и начать с нуля дизайн, используя таблицы стилей в qt.
Виджеты должны быть контейнеры чего-то еще.

101 Руководство по полям / заполнению виджетов стилей с использованием таблиц стилей в qt4

  • Создать любой вид стилевого виджета BoxModel (не QWidgetиспользовать QFrame вместо!). Проверьте документацию
  • Назначьте ему нормальное расположение.
  • Если вы не хотите, чтобы поля по умолчанию были большими, как апокс. Более или менее на 8 пикселей, вы должны установить отступ содержимого (не виджет, вы можете, но не работает) на 0: setContentsMargins(0,0,0,0),
  • По желанию (я не знаю, в каких случаях), чтобы привести все к экстремальному сбросу (без границ, вообще ничего), также установите интервал в 0. setSpacing(0)
  • установите имя объекта виджета на произвольное имя: setObjectName("name"),
  • установите свой стиль, изменяя QFrame вашим виджетом: QFrame#name { things... }

Если вы хотите стилизовать пользовательский виджет и у вас есть произвольное имя класса для этого, и вы намереваетесь использовать имя класса вместо setObjectNameдобавьте этот небольшой хак, переопределяющий ваш метод рисования, который включен в пример документации Qt Stylesheet.

Если вы создаете подкласс от QWidget, вам нужно предоставить paintEvent для
Ваш пользовательский QWidget, как показано ниже:

void CustomWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

Приведенный выше код не используется, если таблица стилей не установлена.

Предупреждение: убедитесь, что вы определить макрос Q_OBJECT для вашего обычая
виджет.

Затем вы можете создать стиль, используя имя класса. ClassName {}


Теперь у меня есть серьезная проблема, которой я поделился с другими людьми, и у меня не было решения. Заполнение не работает вообще. Работают только поля.

Так

ClassName
{ padding: 200px; margin: 5px; }

делает так же, как

ClassName
{ margin: 5px; }

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

Кто-нибудь знает, как полностью закончить мой 101 гид?

2

Решение

Заполняющие работы, и я ответил на вопрос в своем собственном вопросе.

Моя проблема исходит от класса, который я использовал для проверки того, что заполнение не работает. Это был подкласс QWidget, который, как ясно сказано в документации:

Поддерживает только background, background-clip и background-origin
свойства.

Так что мое свойство background работало, и я не понимал, почему padding не работает.

Поэтому я ответил на свой вопрос, не зная об этом.
Я думаю, что это отличный ресурс для добавления в вики. Может ли кто-нибудь помочь мне с этим?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]