Qt中布局管理器QFormLayout

QFormLayout 类管理输入小部件的表单及其关联的标签。
QFormLayout 是一个方便的布局类,它以两列形式布置其子项。 左列由标签组成,右列由“字段”小部件(行编辑器、旋转框等)组成。

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLineEdit>
#include <QFormLayout>
#include <QDebug>
#include <QLabel>
#include <QString>
#include <QVBoxLayout>
#include <QPushButton>
#include <QDialog>
#include <QLabel>

class Widget : public QWidget
{
    Q_OBJECT
    
protected:
    QString FetchCnString(const char* s);
    QPushButton m_pushBtn1;
    QPushButton m_pushBtn2;
    QPushButton m_pushBtn3;
    
private slots:
    void OnButton1();
    void OnButton2();
    void OnButton3();
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
};
#endif // WIDGET_H
#include "Widget.h"

Widget::Widget(QWidget *parent) : QWidget(parent), m_pushBtn1(this), m_pushBtn2(this), m_pushBtn3(this)
{
    QVBoxLayout* vLayout = new QVBoxLayout();
    m_pushBtn1.setText(FetchCnString("第1种"));
    m_pushBtn2.setText(FetchCnString("第2种"));
    m_pushBtn3.setText(FetchCnString("第3种"));
    
    vLayout->addWidget(&m_pushBtn1);
    vLayout->addWidget(&m_pushBtn2);
    vLayout->addWidget(&m_pushBtn3);
    
    connect(&m_pushBtn1, SIGNAL(clicked()), this, SLOT(OnButton1()));
    connect(&m_pushBtn2, SIGNAL(clicked()), this, SLOT(OnButton2()));
    connect(&m_pushBtn3, SIGNAL(clicked()), this, SLOT(OnButton3()));
    
    setLayout(vLayout);
}

QString Widget::FetchCnString(const char *s)
{
    return QString::fromLocal8Bit(s);
}

void Widget::OnButton1()
{
    //qDebug() << "Widget::OnButton1()";
    QDialog dialog(this);
    QLabel* label = new QLabel();
    QFormLayout* fLayout = new QFormLayout();
    
    label->setText(FetchCnString("第1种"));
    label->setAlignment(Qt::AlignCenter);
    label->setStyleSheet("font-size:20px");
    fLayout->addRow(label);
    QLineEdit* edit1 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("姓名:"), edit1);
    QLineEdit* edit2 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("年龄:"), edit2);
    QLineEdit* edit3 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("组别"), edit3);
    QLineEdit* edit4 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("组别"), edit4);
    fLayout->setLabelAlignment( Qt::AlignLeft);
    fLayout->setRowWrapPolicy(QFormLayout::WrapAllRows);
    
    dialog.setLayout(fLayout);
    int ret = dialog.exec();
    
    qDebug() << ret;
}

void Widget::OnButton2()
{
    QDialog dialog(this);
    QLabel* label = new QLabel();
    QFormLayout* fLayout = new QFormLayout();
    
    label->setText(FetchCnString("第2种"));
    label->setAlignment(Qt::AlignCenter);
    label->setStyleSheet("font-size:20px");
    fLayout->addRow(label);
    QLineEdit* edit1 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("姓名:"), edit1);
    QLineEdit* edit2 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("年龄:"), edit2);
    QLineEdit* edit3 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("组别:"), edit3);
    QLineEdit* edit4 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("组别aaaaaaaaaaaaaaaaaaaaaaaaaaa"), edit4);
    fLayout->setLabelAlignment( Qt::AlignLeft);
    fLayout->setRowWrapPolicy(QFormLayout::DontWrapRows);
    fLayout->setLabelAlignment(Qt::AlignRight);
    dialog.setLayout(fLayout);
    dialog.exec();
    
}

void Widget::OnButton3()
{
    QDialog dialog(this);
    QLabel* label = new QLabel();
    QFormLayout* fLayout = new QFormLayout();
    
    label->setText(FetchCnString("第3种"));
    label->setAlignment(Qt::AlignCenter);
    label->setStyleSheet("font-size:20px");
    fLayout->addRow(label);
    QLineEdit* edit1 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("姓名:"), edit1);
    QLineEdit* edit2 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("年龄:"), edit2);
    QLineEdit* edit3 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("组别:"), edit3);
    QLineEdit* edit4 = new QLineEdit(&dialog);
    fLayout->addRow(FetchCnString("组别aaaaaaaaaaaaaaaaaaaaaaaaaaa"), edit4);
    fLayout->setLabelAlignment( Qt::AlignLeft);
    fLayout->setRowWrapPolicy(QFormLayout::WrapLongRows);
    
    dialog.setLayout(fLayout);
    dialog.exec();
}

Widget::~Widget()
{
}

运行效果图:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值