qt QFormLayout详解

QFormLayout 是 Qt 框架中用于创建表单布局的一个类,适合于将标签和输入控件整齐地排列在一起。它可以帮助开发者轻松构建用户输入界面,尤其是在处理表单时。

QFormLayout以两列的形式展示其子项,常用于创建"标签-字段"对的布局。其中,左列通常是标签(由QLabel组成),右列是字段(由输入组件如QLineEdit、QSpinBox等组成)。这种布局方式非常适合用于接收用户输入的窗体,如设置面板、登录界面等。

重要方法

  • addRow(QWidget *label, QWidget *field):**向表单布局中添加一行,包括一个标签和一个字段。

  • insertRow(int row, QWidget *label, QWidget *field):**在指定位置插入一行。

  • **removeRow(int row):**移除指定位置的行。

  • **takeRow(int row):**移除指定位置的行,但不删除子控件。

  • *setWidget(int row, QFormLayout::ItemRole role, QWidget *widget):**在指定行和角色位置设置一个控件。

  • *getWidgetPosition(QWidget *widget):**获取控件在布局中的位置。

  • **setFormAlignment(Qt::Alignment alignment):**设置整个表单的对齐方式。

  • **setLabelAlignment(Qt::Alignment alignment):**设置标签(左侧区域)的对齐方式。

  • **setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy):**设置字段的增长策略。

  • **setRowWrapPolicy(QFormLayout::RowWrapPolicy policy):**设置行的换行策略。

  • **rowCount():**获取布局中的行数。

  • **formAlignment():**获取整个表单的对齐方式。

  • **labelAlignment():**获取标签的对齐方式。

  • **fieldGrowthPolicy():**获取字段的增长策略。

  • **rowWrapPolicy():**获取行的换行策略。

  • **itemAt(int row, QFormLayout::ItemRole role = QFormLayout::LabelRole):**获取指定行和角色的布局项。

  • *layoutForField(QWidget *field):**获取字段所在的布局。

  • *labelForField(QWidget *field):**获取与字段关联的标签。

    #include <QApplication>
    #include <QWidget>
    #include <QFormLayout>
    #include <QLineEdit>
    #include <QPushButton>

    int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    复制代码
      QWidget window;
      QFormLayout *formLayout = new QFormLayout;
    
      QLineEdit *nameEdit = new QLineEdit;
      QLineEdit *emailEdit = new QLineEdit;
      
      formLayout->addRow("Name:", nameEdit);
      formLayout->addRow("Email:", emailEdit);
    
      QPushButton *submitButton = new QPushButton("Submit");
      formLayout->addRow(submitButton);
    
      window.setLayout(formLayout);
      window.setWindowTitle("QFormLayout Example");
      window.show();
    
      return app.exec();

    }

觉得有帮助的话,打赏一下呗。。

相关推荐
妙为3 小时前
银河麒麟V4下编译Qt5.12.12源码
c++·qt·国产化·osg3.6.5·osgearth3.2·银河麒麟v4
史迪仔01126 小时前
[QML] QML IMage图像处理
开发语言·前端·javascript·c++·qt
小樱花的樱花11 小时前
打造高效记事本:UI设计到功能实现
开发语言·c++·qt·ui
丁劲犇11 小时前
QMetaObject的invokeMethod异步阻塞调用在MCPServer开发中的巧妙应用
qt·ai·agent·异步·阻塞·mcp·mcp server
m0_4972141513 小时前
Qt事件系统
开发语言·qt
秋月的私语14 小时前
遥感影像拼接线优化工具:基于Qt+GDAL+OpenCV的从零到一实践
开发语言·qt·opencv
姓刘的哦14 小时前
Qt自定义控件
开发语言·qt
AlanW15 小时前
Qt Model/View 框架完全指南:从入门到性能优化
qt
艾莉丝努力练剑17 小时前
【QT】Qt常用控件与布局管理深度解析:从原理到实践的架构思考
linux·运维·服务器·开发语言·网络·qt·架构
Z文的博客18 小时前
嵌入式 ARM 设备交叉编译 mosquitto 2.0.20 (完整 TLS 支持) 详细教程 TRAE全程辅助,没敲一行代码
qt·mqtt·嵌入式·ai编程·mosquitto·嵌入式linux·trae