QFormLayout类用来管理输入型组件和关联标签组成的Form表单。 默认容器由两列组成:第一列为关联输出标签,第二列为输入型组件。 如果关联标签文本中的某个字母之前有"&"字符(显示为带下划线的字母),则此 通过按组合快捷键(Alt + 字母),可将光标移到标签右侧的输入型组件。该类的继承层次结构如下:
(QObject,QLayoutltem) - QLayout - QFormLayout
构造函数为:
QFormLayout([[QWidget parent])
与QHBoxLayout和QVBoxLayout一样,不是QWidget类的继承者,因此没有自己的窗口,不能单独使用。 因此,容器作为子控件使用。要在构造函数中指定父组件。如果没有,可将容器作参数,调用父组件的setLayout( )方法。使用示例:
-- coding: utf-8 --
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("QFormLayout")
window.resize(300, 150)
lineEdit = QtWidgets.QLineEdit()
textEdit = QtWidgets.QTextEdit()
button1 = QtWidgets.QPushButton("&Send")
button2 = QtWidgets.QPushButton("&Clear")
hbox = QtWidgets.QHBoxLayout()
hbox.addWidget(button1)
hbox.addWidget(button2)
form = QtWidgets.QFormLayout()
form.addRow("&Name:", lineEdit)
form.addRow("&Description:", textEdit)
form.addRow(hbox)
window.setLayout(form)
window.show()
sys.exit(app.exec_())
运行后的效果:
PyQt5编程(26):在窗口中布局组件—表单对齐
该类有以下方法(详见http://doc.qt.io/qt-5/qformlayout.html):
addRow( ) - 添加到容器的末尾。格式有:
addRow(QString labelText, QWidget field)
addRow(QWidget label, QWidget field)
addRow(QWidget widget)
addRow(QString labelText, QLayout field)
addRow(QWidget label, QLayout field)
addRow(QLayout widget)
格式1,4可以通过“&”字母实现与输入型组件的关联。格式2,4则需要通过标签组件的setBuddy( )方法实现关联。
insertRow( ) - 添加到容器的指定位置。格式有:
insertRow(int row,QString labelText, QWidget field)
insertRow(int row,QWidget label, QWidget field)
insertRow(int row,QWidget widget)
insertRow(int row,QString labelText, QLayout field)
insertRow(int row,QWidget label, QLayout field)
insertRow(int row,QLayout widget)
格式1,4可以通过“&”字母实现与输入型组件的关联。格式2,4则需要通过标签组件的setBuddy( )方法实现关联。如果参数1超出范围,则添加到容器的末尾。
[QWidget
p
arent])
# -- coding: utf-8 --
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("QFormLayout")
window.resize(300, 150)
lineEdit = QtWidgets.QLineEdit()
textEdit = QtWidgets.QTextEdit()
button1 = QtWidgets.QPushButton("&Send")
button2 = QtWidgets.QPushButton("&Clear")
hbox = QtWidgets.QHBoxLayout()
hbox.addWidget(button1)
hbox.addWidget(button2)
form = QtWidgets.QFormLayout()
form.addRow("&Name:", lineEdit)
form.addRow("&Description:", textEdit)
form.addRow(hbox)
window.setLayout(form)
window.show()
sys.exit(app.exec_())
运行后的效果:
- addRow( ) - 添加到容器的末尾。格式有:
- addRow(QString
labelText, QWidget field) - addRow(QWidget label, QWidget field)
- addRow(QWidget
widget) - addRow(QString
labelText, QLayout field) - addRow(QWidget label, QLayout field)
- addRow(QLayout
widget)
- insertRow( ) - 添加到容器的指定位置。格式有:
-
- insertRow(int row,QString
labelText, QWidget field) - insertRow(int row,QWidget label, QWidget field)
- insertRow(int row,QWidget
widget) - insertRow(int row,QString
labelText, QLayout field) - insertRow(int row,QWidget label, QLayout field)
- insertRow(int row,QLayout
widget)
- insertRow(int row,QString