分割窗口QSplitter类在应用程序中经常看到,它可以灵活分割窗口步局,经常用在类似文件资源管理器的窗口设计中。
运行结果如下:
在项目的“main.cpp”中插入以下代码:
#include "mainwindow.h"
#include <QApplication>
#include <QSplitter>
#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);
//(a)
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(1,1);
splitterMain->setWindowTitle(QObject::tr("Splitter"));
splitterMain->show();
//MainWindow w;
//w.show();
return a.exec();
代码理解:
(1)QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0):新建一个QSplitter类对象,作为一个主分割窗口,设定此分割窗口为水平分割窗口。
(2)QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain):新建一个QTextEdit类对象,并将其插入主分割窗口中。
(3)textLeft->setAlignment(Qt::AlignCenter):设定TextEdit中文字的对齐方式,常用的对其方式有:
1.Qt::AlignLeft:左对齐
2.Qt::AlignRigh:t右对齐
3.Qt::AlignCenter:文字居中(Qt::AlignHCenter为水平居中,Qt::AlignVCenter为垂直居中)
4.Qt::AlignUp:文字与顶端对齐
5.Qt::AlignBottom:文字与底部对齐
(4)QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain)新建一个QSplitter类对象,作为右分割窗口,设定此分割窗口为垂直分割窗口,并以主分割窗口为父窗口
(5)splitterRight->setOpaqueResize(false):调用setOpaqueResize(bool)方法用于设定分割窗口的分割条咋拖拽时是否实时更新显示,若设为true则实时更新显示,若设置为flase则在拖拽的过程中只显示一条灰色的粗线条,在拖拽到位并释放鼠标后再显示分割条
(6) splitterMain->setStretchFactor(1,1):调用setStretchFactor()方法用于设定可伸缩控件,它的第一个参数用于指定设置的控件序号,控件序号按插入的先后次序从0开始依次编号:第二个参数为大于0的值,表示此控件为可伸缩控件。此实例中设定右部分分割窗口为可伸缩控件,当整个对话框的宽度发生改变时,左部的文件编辑框宽度保持不变,右部的分割窗口宽度随整数对话框大小改变进行调整