在Qt中实现较复杂窗口布局


常用的布局管理器包括:

  1. QVBoxLayout:垂直布局管理器。将控件按照垂直方向依次排列。
  2. QHBoxLayout:水平布局管理器。将控件按照水平方向依次排列。
  3. QGridLayout:网格布局管理器。将控件放置到一个网格中。
  4. QFormLayout:表单布局管理器。将标签和编辑器控件组合在一起,呈现类似于表单的布局。

#include "dialog.h"
#include
#include
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(tr("UserInfo"));
    //左侧
    UserNameLabel=new QLabel(tr("用户名:"));
    UserNameLineEdit=new QLineEdit;
    NameLabel=new QLabel(tr("姓名:"));
    NameLineEdit=new QLineEdit;
    SexLabel=new QLabel(tr("性别:"));
    SexComoBox=new QComboBox;
    SexComoBox->addItem(tr("女"));
    SexComoBox->addItem(tr("男"));
    DepartmentLabel=new QLabel(tr("部门:"));
    DepartmentTextEdit=new QTextEdit;
    AgeLabel=new QLabel(tr("年龄:"));
    AgeLineEdit=new QLineEdit;
    OtherLabel=new QLabel(tr("备注:"));
    OtherLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    LeftLayout=new QGridLayout();
    // add widget
    LeftLayout->addWidget(UserNameLabel,0,0);
    LeftLayout->addWidget(UserNameLineEdit,0,1);
    LeftLayout->addWidget(NameLabel,1,0);
    LeftLayout->addWidget(NameLineEdit,1,1);
    LeftLayout->addWidget(SexLabel,2,0);
    LeftLayout->addWidget(SexComoBox,2,1);
    LeftLayout->addWidget(DepartmentLabel,3,0);
    LeftLayout->addWidget(DepartmentTextEdit,3,1);
    LeftLayout->addWidget(AgeLabel,4,0);
    LeftLayout->addWidget(AgeLineEdit,4,1);
    LeftLayout->addWidget(OtherLabel,5,0,1,2);
    LeftLayout->setColumnStretch(0,1);
    LeftLayout->setColumnStretch(1,3);
    //right
    HeadLabel=new QLabel(tr("头像:"));
    HeadIconLabel=new QLabel;
    QPixmap icon("312.png");
    HeadIconLabel->setPixmap(icon);
    HeadIconLabel->resize(icon.width(),icon.height());
    UpdateHeadBtn=new QPushButton(tr("更新"));
    // right and top
    TopRightLayout=new QHBoxLayout();
    TopRightLayout->setSpacing(20);
    TopRightLayout->addWidget(HeadLabel);
    TopRightLayout->addWidget(HeadIconLabel);
    TopRightLayout->addWidget(UpdateHeadBtn);
    IntroductionLabel=new QLabel(tr("个人说明:"));
    IntroductionTextEdit=new QTextEdit;
    //right
    RightLayout=new QVBoxLayout();
    RightLayout->setMargin(10);
    RightLayout->addLayout(TopRightLayout);
    RightLayout->addWidget(IntroductionLabel);
    RightLayout->addWidget(IntroductionTextEdit);
    //bottom
    OkBtn=new QPushButton(tr("确定"));
    CancelBtn=new QPushButton(tr("取消"));
    //
    ButtomLayout=new QHBoxLayout();
    ButtomLayout->addStretch();
    ButtomLayout->addWidget(OkBtn);
    ButtomLayout->addWidget(CancelBtn);
    QGridLayout  *mainLayout=new QGridLayout(this);
    mainLayout->setMargin(15);
    mainLayout->setSpacing(10);
    mainLayout->addLayout(LeftLayout,0,0);
    mainLayout->addLayout(RightLayout,0,1);
    mainLayout->addLayout(ButtomLayout,1,0,1,2);
    mainLayout->setSizeConstraint(QLayout::SetFixedSize);
    }
展开阅读全文

页面更新:2024-02-22

标签:布局   窗口   网格   管理器   表单   控件   排列   大小   方向   水平

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top