使用QSplitter进行窗口分割,使用 Horizontal 创建水平的分割窗口textleft 创建一个子分割窗口splitterRight 放在进去默认就会到右侧,这里继续设置一下setOpaqueResize函数设置右侧的拖拽不刷新只显示一个粗线条,
在这个右侧的子分割窗口中添加两个textEidt分别处于上下两个窗口 然后在主窗口中设置了右侧的两个子窗口为可伸缩控件。
#include<QFont> #include<QSplitter> #include <QApplication> #include<QTextEdit> int main(int argc, char *argv[]) { QApplication a(argc, argv); QFont font("ZYSong18030",12); a.setFont(font); //主窗口分割 QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0); //左部分割窗口 QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"),splitterMain); textLeft->setAlignment(Qt::AlignCenter); //右部分割窗口 QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain); splitterRight->setOpaqueResize(false); //setOpaqueResize 设定分割窗口的分割条在拖曳时是否为实时更新显示, //若设为true则实时更新显示,若设为false则在拖曳时只显示一条灰色的粗线条, //在拖曳到位并释放鼠标后再显示分割条。默认设置为true //splitterRight 中的up QTextEdit*textUp = new QTextEdit(QObject::tr("Top widget"),splitterRight); textUp->setAlignment(Qt::AlignCenter); //splitterRight 中的bottom QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom Widget"),splitterRight); textBottom->setAlignment(Qt::AlignCenter); splitterMain->setStretchFactor(1,1); //调用setStretchFactor()方法用于设定可伸缩控件, //它的第1个参数用于指定设置的控件序号,控件序号按插入的先后次序从0起依次编号; //第2个参数为大于0的值,表示此控件为可伸缩控件。此实例中设定右部分分割窗口为可伸缩控件, //当整个对话框的宽度发生改变时,左部的文件编辑框宽度保持不变,右部的分割窗口宽度随整个对话框大小的改变进行调整。 splitterMain->setWindowTitle(QObject::tr("Splitter")); splitterMain->show(); return a.exec(); }
有图有真相