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

C++ 如何将两个标签字段对作为一行添加到QFormLayout?,c++,qt5,qtwidgets,C++,Qt5,Qtwidgets,因此,我有QFormLayout来管理我的QLabel QLineEdit对 问题是,我需要实现这样的目标: 水平边界/标题不是问题,但“街道”-“公寓”/“邮政编码”-“城市”对是问题 所以我的问题是:如何将两对QLabel QLineEdit作为一行添加到QFromLayout 如果QFormLayout无法实现,您是否有任何建议,可以在其他布局(我想是QGridLayout)中实现同样的效果 请记住,标签在翻译成其他语言后可以有不同的大小比例 提前谢谢 我认为您应该使用QLabel和QL

因此,我有QFormLayout来管理我的QLabel QLineEdit对
问题是,我需要实现这样的目标:

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

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

如果QFormLayout无法实现,您是否有任何建议,可以在其他布局(我想是QGridLayout)中实现同样的效果

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


提前谢谢

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

所以你打开了主窗口。主布局->创建小部件->添加垂直布局->将QLabel和QLineEdit添加到小部件布局->将小部件添加到主布局


我认为你应该展示一个QT设计师教程。这将花费您一些时间,但之后您会变得更快。

谢谢您的回复

最后,我将QLabel添加为标签,并将QLineEdit、QLabel和QLineEdit作为字段的QHBoxLayout添加到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
s设置为一个固定宽度。为此,我对所有
secondLabel
s进行了两次迭代:第一次用于查找最大宽度,第二次用于将此宽度设置为所有标签


有点老套,但到目前为止我还没有找到更好的方法。在我看来,使用QGridLayout的解决方案将更加复杂。

如果要添加标签而不显示QLineEdit,可以定义QLineEdit并将其隐藏: (代码是用python编写的,只是为了说明原理)


谢谢回复!不幸的是,我真的不明白你的意思。您能更详细地描述一下您的解决方案吗?最好使用嵌套布局管理(本机Qt解决方案)。这意味着您可以为右栏创建一个单独的
QFormLayout
,并使用
addRow(QLayout*layout)
将其添加到您的父布局中。dazewell使用QDesigner来完成ui的速度要快得多,这就是您对我的解决方案所做的@罗马人是造物主。在Widget.ui中创建新类->Qt->Qt表单->小部件->创建QLabel和QLineEdit,右键单击->垂直布局。返回要添加QLabel QLineEdit的主类,创建自定义小部件类的对象,然后制作布局->添加小部件(yourWidget);只需在QtDesigner中同时单击这个按钮,怎么样?应该相当直截了当。是的,您可以在代码中使用QGridLayout,只需将Apartment和City放入第1列,而单行的columnSpan设置为-1。
self._dummy = QLineEdit(self)
self._dummy.hide()
layout = QFormLayout(self)
layout.addRow("text without an edit field", self._dummy)