所以我有QFormLayout管理我的QLabel-QLineEdit对就好了。
问题是,我需要达到这样的目的:
水平边框/ tittle不是问题,但“街道” - “公寓”/“邮政编码” - “城市”对是。
所以我的问题是:如何将两对QLabel-QLineEdit作为一行添加到QFromLayout?
如果使用QFormLayout是不可能的,你对其他布局(QGridLayout,我猜)有什么建议吗?
请注意,标签在翻译成其他语言后可以有不同的大小比例。
提前致谢!
答案 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)