Qt 分裂布局部件可伸缩setStretchFactor()
程序员文章站
2022-05-30 17:27:14
...
分裂布局部件可伸缩setStretchFactor()
layout->setStretchFactor(list,1):设定可伸缩控件,第一个参数用于指定设置的控件(序号从0起编号),第2个参数的值大于0则表示此控件为可伸缩控件。
用一句话来表示我对setStretchFactor(list,1)的理解吧:就是说,如果设置了可伸缩控件,则该控件对应的窗口,在进行缩放的时候,该控件不会进行伸缩。。(伸缩:被拉大了,被拉小了)。。。
而且要说明一下,在一开始,所有的部件都默认指定为可伸缩的。。一旦有部件指定为可伸缩部件后,其他部件自动设置为不可伸缩部件。。
实例:
源代码:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//主分割窗口
QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0);//第二个参数为0,表示分离的窗口为当前窗口
QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"),splitterMain);
textLeft->setAlignment(Qt::AlignCenter);//当前段落的对齐方式
//右部分割窗口
QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain);
splitterRight->setOpaqueResize(false);//用于是指分割窗的分割条在拖动时是否实时更新
QTextEdit *textUp = new QTextEdit(QObject::tr("Top widget"),splitterRight);
textUp->setAlignment(Qt::AlignCenter);
QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom Widget"),splitterRight);
textBottom->setAlignment(Qt::AlignCenter);
splitterMain->setStretchFactor(0,1);//设置序号为0的分裂布局部件可伸缩
splitterMain->setWindowTitle(QObject::tr("Splitter"));
splitterMain->show();
return a.exec();
}
窗体被拉大后:
我们可以发现,当整个窗体被拉大后,右边的垂直布局是不会缩放的。
splitterMain->setStretchFactor(0,1);//设置序号为0的分裂布局部件可伸缩
因为我指定了左边的部件为可伸缩,则窗体拉大后,左边的部件也随着伸缩,而右边的布局自动设为不可伸缩部件。。