分割窗口类: QSplitter
构造函数:
构造具有给定方向和父级的拆分器。
默认为水平切割
Qt::Horizontal | 水平分割 |
Qt::Vertical | 垂直分割 |
常用的函数:
addWidget() | 添加控件 |
insertWidget() | 插入控件 |
setOpaqueResize(bool)默认为true | 设定分割窗口的分割条在拖拽时是否实时更新显示 |
setStrechFactor(int,int) | 设定可伸缩控件 第一个参数用来设定控件序号 0开始 第二个参数 >0 表示该控件为可伸缩控件 |
count() | 显示控件个数 |
widget() | 可以访问控件 |
setOrientation(Qt::Vertical) | 可以设置切割方向 |
水平切割和垂直切割的区别:
水平切割:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSplitter *sp1=new QSplitter(0);//默认为水平切割
sp1->resize(400,400);
QTextEdit *text1=new QTextEdit("上窗口");
sp1->addWidget(text1);
QTextEdit *text2=new QTextEdit("下窗口");
sp1->addWidget(text2);
sp1->show();
return a.exec();
}
垂直切割:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSplitter *sp1=new QSplitter(Qt::Vertical,0);//创建一个窗口
sp1->resize(400,400);
QTextEdit *text1=new QTextEdit("上窗口");
sp1->addWidget(text1);
QTextEdit *text2=new QTextEdit("下窗口");
sp1->addWidget(text2);
sp1->show();
return a.exec();
}
注意事项:当你一直addWIdget(),则会一直切割
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSplitter *sp1=new QSplitter(0);//创建一个窗口
sp1->resize(400,400);
QTextEdit *text1=new QTextEdit("左窗口");
QTextEdit *text2=new QTextEdit("右窗口");
sp1->addWidget(text1);
sp1->addWidget(text2);
QPushButton *pt1=new QPushButton("按键一");
QPushButton *pt2=new QPushButton("按键二");
sp1->addWidget(pt1);
sp1->addWidget(pt2);
sp1->show();
return a.exec();
}
使用伸缩因子:
第一个参数为索引(从0开始),第二个参数为使其具有的拉伸系数
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSplitter *sp1=new QSplitter(0);//创建一个窗口
sp1->resize(400,400);
QTextEdit *text1=new QTextEdit("左窗口");
QTextEdit *text2=new QTextEdit("右窗口");
sp1->addWidget(text1);
sp1->setStretchFactor(0,1);//索引和
sp1->setStretchFactor(1,1);
sp1->addWidget(text2);
sp1->show();
return a.exec();
}
当中间的滑块滑到最左边时,第一次会滑倒拉伸系数指定的位置
该位置再移动滑块,才会到最左边
水平和垂直的综合使用:
创建项目 继承于 mainWindow
在main.cpp中编写
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//主分割窗口
QSplitter *sp1=new QSplitter(Qt::Horizontal,0);//水平分割
sp1->resize(400,400);//设置窗口大小
QTextEdit *td1=new QTextEdit("左窗口",sp1);
//右分割窗口
QSplitter *sp2=new QSplitter(Qt::Vertical,sp1);//垂直分割
sp2->setOpaqueResize(false);
QTextEdit *td2=new QTextEdit("右上窗口",sp2);
td2->setAlignment(Qt::AlignCenter);
QTextEdit *td3=new QTextEdit("右下窗口",sp2);
td3->setAlignment(Qt::AlignCenter);
sp1->setStretchFactor(0,1);//把左窗口设为可伸缩窗口
sp1->setWindowTitle("布局管理");
sp1->show();
//MainWindow w;
//w.show();
return a.exec();
}