【发布时间】:2011-03-04 11:28:30
【问题描述】:
如何在QVBoxLayout 中放置具有左右边距的QTextEdit?当然,我可以使用QHBoxLayout,将QTextEdit 放置在间距之间的水平布局中(addSpacing(40)),然后水平布局才能添加到垂直布局中,但想知道是否有一种直接的方式。
【问题讨论】:
如何在QVBoxLayout 中放置具有左右边距的QTextEdit?当然,我可以使用QHBoxLayout,将QTextEdit 放置在间距之间的水平布局中(addSpacing(40)),然后水平布局才能添加到垂直布局中,但想知道是否有一种直接的方式。
【问题讨论】:
有
void QLayout::setContentsMargins ( int left, int top, int right, int bottom );
但这为整个事情设置了一个边距。如果您只想要QTextEdit 的边距而不需要布局中的其他任何内容,那么您必须使用您提到的QHBoxLayout 方法。我不知道有任何其他技巧可以解决这个问题。
【讨论】:
如果您只想要 QTextEdit 的边距而不想要 QVerticalLayout 中的任何其他元素,您可以使用 QT 样式表。您只需为 QTextEdit 对象命名(如“myMarginsTextEdit”)并为其设置样式,例如:
QTextEdit#myMarginsTextEdit
{
margin-left: 40px;
margin-right: 40px;
}
如果您没有使用 QT 样式表来为您的应用程序设置样式,您仍然可以只使用它来设置该项目的样式。你可以这样做(想象你的 QTextEdit 变量被称为“textEditItem”):
textEditItem.setStyleSheet("QTextEdit {margin-left:40px; margin-right:40px}");
另一个选项是在垂直布局中使用内容边距,然后将其应用于所有元素。
【讨论】:
您没有提及您是使用 Qt Designer 还是在代码中手动执行此操作。
在代码中: QLayout 类有一个 setContentsMargins 属性,您可以使用该属性将左右设置为您想要的任何内容。甚至有两种风格,一种采用 left、top、right、bottom 作为单独的参数,另一种采用 QMargins 对象。
Qt 设计器: 直接设置边距属性即可。
【讨论】: