6

所以我有 QFormLayout 可以很好地管理我的 QLabel-QLineEdit 对。
问题是,我需要实现这样的目标: 在此处输入图像描述

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

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

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

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

提前致谢!

4

4 回答 4

8

感谢大家的回复!

我最终将 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);

做的伎俩!

此外,如果您打算像这样添加多行,我需要将所有secondLabels 设置为一个固定宽度。我通过对所有 s 进行两次迭代来做到这一点secondLabel:第一次是找到最大宽度,第二次是将此宽度设置为所有这些。

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

于 2015-07-07T12:47:58.197 回答
1

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

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

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

于 2015-07-03T11:54:15.393 回答
0

如果你想添加一个没有QLineEdit出现的标签,你可以定义一个QlineEdit并隐藏它:(代码在python中,只是为了展示原理)

self._dummy = QLineEdit(self)
self._dummy.hide()
layout = QFormLayout(self)
layout.addRow("text without an edit field", self._dummy)
于 2019-11-19T08:35:25.430 回答
0

这是我刚刚为我的解决方案创建的一种方法,这是一个可能对某人有所帮助的伪代码版本。

    def create_gb_f(self):
        gb = QGroupBox("F") 

        ly_horiz = QHBoxLayout()

        layout = QFormLayout()
        layout.addRow( label, edit)
        ly_horiz.addLayout(layout)

        layout = QFormLayout()
        layout.addRow( label, edit)
        ly_horiz.addLayout(layout)

        ly_horiz.addWidget( button)
        gb.setLayout(ly_horiz)
        return gb

于 2022-01-27T02:48:53.280 回答