Qt - Как разместить QTextEdit с левым и правым полями в QVBoxLayout? - PullRequest
3 голосов
/ 16 июня 2010

Как разместить QTextEdit с левым и правым полями в QVBoxLayout? Конечно, я мог бы использовать QHBoxLayout, поместить QTextEdit в горизонтальный макет между промежутками (addSpacing(40)), и только тогда горизонтальный макет можно добавить в вертикальный макет, но я хочу знать, есть ли прямой способ сделать это.

Ответы [ 3 ]

7 голосов
/ 16 июня 2010

Есть

void QLayout::setContentsMargins ( int left, int top, int right, int bottom );

но это создает запас по всему. Если вы хотите, чтобы поля были только на QTextEdit и ничего в макете, то вам нужно использовать упомянутый вами подход QHBoxLayout. Я не знаю других уловок, чтобы обойти это.

5 голосов
/ 16 июня 2010

Если вы хотите, чтобы поля были только для вашего QTextEdit, а не для любого другого элемента в QVerticalLayout, вы можете использовать для этого таблицы стилей QT. Вам просто нужно дать имя объекту QTextEdit (например, «myMarginsTextEdit») и стилизовать его, например:

QTextEdit#myMarginsTextEdit
{
    margin-left: 40px;
    margin-right: 40px;
}

Если вы не используете таблицы стилей QT для стилизации своего приложения, вы все равно можете использовать его только для стилизации этого элемента. Вы можете сделать это следующим образом (представьте, что ваша переменная QTextEdit называется call "textEditItem"):

textEditItem.setStyleSheet("QTextEdit {margin-left:40px; margin-right:40px}");

Другой вариант - использовать поля содержимого в вертикальной компоновке, но затем он применяется ко всем элементам.

0 голосов
/ 16 июня 2010

Вы не упоминаете, используете ли вы Qt Designer или делаете это вручную в коде.

В коде: класс QLayout имеет свойство setContentsMargins, которое вы можете использовать для установки левого и правого значений по своему усмотрению.Есть даже два варианта: один принимает левый, верхний, правый, нижний как отдельные аргументы, а другой принимает объект QMargins.

Qt Designer: просто установите свойства полей напрямую.

...