在Qt中,如何在不同的组框中对齐表单元素?

swo*_*ngu 12 layout qt qt4

我正在尝试创建一个标准的双列表单,其中第一列是文本标签(QLabel),第二列是交互式窗口小部件,通常是文本字段(QLineEdit).我们已经决定将一个共享主题的表单行放在一个内部QGroupBox,因此在一个单独的布局中,而不是主要布局.因此,每个内部QGroupBox的表单元素不与QGroupBoxes 之外的表单元素水平对齐.

如何以一种方式使用组框和布局,使得组合框内外的QLabels和QLineEdits彼此(水平)对齐?

谢谢!

小智 5

您可以将组框内所有标签的minimumWidth属性设置为足以显示最宽标签的宽度。这样可以使不同组框中的所有标签对齐。

现在,要使分组框外的标签与分组框内的标签对齐:首先,我假设每个标签/行编辑对都具有自己的水平布局,或者在网格内有多行。无论哪种情况,您都可以将标签的minimumWidth设置为与组框中的标签相同的值。最后,调整水平(或网格)布局上的layoutLeftMargin,layoutRightMargin和layoutSpacing属性,直到标签/行编辑对的左右边缘与组框内的左右边缘对齐。

如果您尚未在Qt Creator或Qt Designer中使用窗体编辑器来构建UI,我发现它可以使此任务变得相当容易。

我不得不承认,这有点不合时宜,但是在我构建的简单测试用例中,它似乎可以正常工作。另一方面,如果用户更改字体大小,这似乎可能会中断。也许有更好的方法?

希望这可以帮助。