欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();
}


效果图:

Qt 分裂布局部件可伸缩setStretchFactor()


窗体被拉大后:

Qt 分裂布局部件可伸缩setStretchFactor()



我们可以发现,当整个窗体被拉大后,右边的垂直布局是不会缩放的。

splitterMain->setStretchFactor(0,1);//设置序号为0的分裂布局部件可伸缩
因为我指定了左边的部件为可伸缩,则窗体拉大后,左边的部件也随着伸缩,而右边的布局自动设为不可伸缩部件。。