После нескольких месяцев исследований и расспросов, я нашел решение, чтобы сделать поля равными 0, а отступы — 0, стилизовать виджет и начать с нуля дизайн, используя таблицы стилей в qt.
Виджеты должны быть контейнеры чего-то еще.
101 Руководство по полям / заполнению виджетов стилей с использованием таблиц стилей в qt4
QWidget
использовать QFrame
вместо!). Проверьте документациюsetContentsMargins(0,0,0,0)
, setSpacing(0)
setObjectName("name")
,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 гид?
Заполняющие работы, и я ответил на вопрос в своем собственном вопросе.
Моя проблема исходит от класса, который я использовал для проверки того, что заполнение не работает. Это был подкласс QWidget, который, как ясно сказано в документации:
Поддерживает только background, background-clip и background-origin
свойства.
Так что мое свойство background работало, и я не понимал, почему padding не работает.
Поэтому я ответил на свой вопрос, не зная об этом.
Я думаю, что это отличный ресурс для добавления в вики. Может ли кто-нибудь помочь мне с этим?
Других решений пока нет …