背景:
一直就知道有四种布局,QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,但是一用到布局,我就只用QGridLayout,哈哈…今天就试了一试QFormLayout,有点把我难住,最后还是解决了。前三种QT手册中都有例子,CSDN上也有很多关于QFormLayout布局的,但是都一样,前面是label,后面是个QLineEdit,QT默认的也是当你改变窗口大小的时候,左边的控件不会改变,右边的控件会拉伸/缩小。
前提和实现:
对于这个类中的很多函数没去搞,网上的朋友也都一一地解释了,但是没找到那种实现左边控件改变,右边不变的博客。
想法:左边是个编辑框,右边是个按钮。话不多说,上代码:
QWidget *pwidget = new QWidget();
QFormLayout *pformLayout = new QFormLayout(pwidget);
QPushButton *pBtn = new QPushButton(pwidget);
QLineEdit *pEdit = new QLineEdit(pwidget);
...............
...............
pformLayout->setWidget(0, QFormLayout::FieldRole, pBtn);
pformLayout->setWidget(0, QFormLayout::LabelRole, pEdit);
pwidget->setLayout(pformLayout);
pwidget->setLayoutDirection(Qt::RightToLeft);
关键函数就是setLayoutDirection了。
但我觉得QFormLayout这个类中应该有实现这个布局的方法,大家如果知道,麻烦告知。