如何将两个标签 - 字段对作为一行添加到QFormLayout?

时间:2015-07-03 11:49:14

标签: c++ qt5 qtwidgets

所以我有QFormLayout管理我的QLabel-QLineEdit对就好了。
问题是,我需要达到这样的目的: enter image description here

水平边框/ tittle不是问题,但“街道” - “公寓”/“邮政编码” - “城市”对是。

所以我的问题是:如何将两对QLabel-QLineEdit作为一行添加到QFromLayout?

如果使用QFormLayout是不可能的,你对其他布局(QGridLayout,我猜)有什么建议吗?

请注意,标签在翻译成其他语言后可以有不同的大小比例。

提前致谢!

3 个答案:

答案 0 :(得分:2)

感谢所有回复!

我最终将QLabel作为标签和QHBoxLayout添加为QLineEdit,QLabel和QLineEdit作为QFormLayout的字段。 类似的东西:

QLabel firstLabel, secondLabel;
QLineEdit fisrtEdit, secondEdit;

QHBoxLayout hBoxLayout;
hBoxLayout.addWidget(firstEdit);
hBoxLayout.addWidget(secondLabel);
hBoxLayout.addWidget(secondEdit);

QWidget container;
container.setLayout(hBoxLayout);

myFormLayout.addRow(firstLabel, container);

诀窍!

另外,如果您计划添加多行,我需要将所有secondLabel设置为一个固定宽度。我通过迭代所有secondLabel两次来做到这一点:第一次找到maximux宽度,第二次将宽度设置为所有宽度。

有点hacky,但到目前为止我找不到更好的方法。在我看来,使用QGridLayout的解决方案会更加复杂。

答案 1 :(得分:1)

我认为您应该创建一个QWidget,使用QLabel和QLineEdit获取Vertical布局,然后在QFormLayout中添加标签。我没有时间向您展示示例,但考虑在QVBoxLayout中使用QLabel-QLineEdit创建一个ui。 通过创建一个ui,您可以轻松地使用相同的表单添加任何窗口小部件。

所以你是主窗口。你的主要布局 - >创建您的小部件 - >添加垂直布局 - >将您的QLabel和QLineEdit添加到您的小部件布局 - >将您的小部件添加到主布局。

我认为你应该展示一个QtCreator-QtDesigner教程。它会花费你一些时间,但之后你会变得非常快。

答案 2 :(得分:0)

如果要添加标签而不显示QLineEdit,则可以定义QlineEdit并将其隐藏: (代码在python中,仅用于显示原理)

self._dummy = QLineEdit(self)
self._dummy.hide()
layout = QFormLayout(self)
layout.addRow("text without an edit field", self._dummy)