Qt学习笔记(2)——Layout

1:绝对布局

所谓绝对布局,就是指在布局内的控件位置是固定的,不会随着窗口大小id变化尔变化。

示例:

    QLabel *label = new QLabel(this);
    label->setText(tr("ID"));
    label->setGeometry(10,10,40,20);
    QLineEdit *leID= new QLineEdit(tr("Hippie"),this);
    leID->setGeometry(50,10,50,20);
    QLabel *label1 =new QLabel(this);
    label1->setText(tr("Password"));
    label1->setGeometry(10,40,40,20);
    QLineEdit *lePwd = new QLineEdit(tr("123456"),this);
    lePwd->setGeometry(50,40,50,20);
    QPushButton *btn = new QPushButton(tr("Quit"),this);
    btn->setGeometry(50,70,50,20);

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

执行以上的布局代码,结果如下图所示:


Qt学习笔记(2)——Layout

绝对布局的不足之处:

1):不能改变窗体的尺寸大小

2):如果改变字体或翻译成另外一种语言,文本可能不能正常显示;

3:):在一些样式下,控件的尺寸不容易控制;


2::手工布局

控件的位置是固定的,但是控件的尺寸会随着窗口的大小变化而变化,可以通过重写窗口控件的resizeEvent()实现对子控件的大小的控制。

示例:

    setMinimumSize(256,190);                            //设置窗体最小尺寸
    resize(365,240);                                               //设置窗体默认尺寸
    int w = width()-minimumWidth();


/×××××××××××××××定义控件×××××××××××××××××××××××××××××××/
    QLabel *namelabel = new QLabel(tr("Name:"),this);
    QLabel *pwdlabel =new QLabel(tr("Passwd:"),this);
    QLineEdit *nameLineEdit= new QLineEdit(this);
    QLineEdit *pwdLineEdit = new QLineEdit(this);
    QPushButton *Okbtn = new QPushButton(tr("OK"),this);
    QPushButton *Cancelbtn = new QPushButton(tr("Cancel"),this);

/×××××××××××设置控件的尺寸和位置×××××××××××××××××××××××/
    namelabel->setGeometry(9,9,40,25);
    nameLineEdit->setGeometry(55,9,50+w,25);
    pwdlabel->setGeometry(9,40,40,25);
    pwdLineEdit->setGeometry(55,40,50+w,25);
    Okbtn->setGeometry(150+w,9,85,25);
    Cancelbtn->setGeometry(150+w,40,85,25);

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

执行以上的布局代码,结果如下图所示:

Qt学习笔记(2)——Layout

        绝对布局和手工布局都需要开发人员编写很多代码,也需要很多的常量计算。如果设计界面改变了,所有的常量都需要重新计算一遍。每个开发人员都不愿意过多的编写这样的代码。管理窗体上控件最简单的方法就是使用Qt的布局管理器。

        Qt提供的布局管理类有QHBoxLayout、QVBoxLayout、QGridLayout、QStackedLayout,它们分别对应的布局样式是水平布局、垂直布局、表格布局、分组布局。由于这些控件你可以在Qt的IDE上直接进行编辑(不需要写代码哦)操作,这里笔者就不一一演示了,感兴趣的看官可以自己试试,看看它们有什么区别。此外再推荐两个在布局中常用到的控件。一个是QSplitter(分裂器),另一个就是Spacers(间隔器),这两个控件在布局中也是很常用的,经常和以上4中布局类型组合使用。

          关于Qt中的常用布局就讲到这里,需要能给各位看官带来一些启发,小弟我不胜荣幸呀!呵呵呵!

 


你可能感兴趣的:(Qt学习笔记(2)——Layout)