3.1分割窗口QSplitter类
一个简单的分割窗口功能,整个窗口有三个子窗口组成。各个子窗口的大小可随意拖拉改变
(图一)
本实例采用采用编写代码的形式实现,具体步骤如下。
(1)新建Qt Widgets Application,项目名称为“Splitter ”,基类选择“QMain Window”,取消“创建界面”复选框的选中状态。
(2)在上述工程的“main.cpp”文件中添加如下代码:
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 widgit"),splitterMain); //b
textLeft->setAlignment(Qt::AlignCenter); //c
//右分割窗口
QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain); //d
splitterRight->setOpaqueResize(false); //e
QTextEdit *textUp = new QTextEdit(QObject::tr("Top Widget"),splitterRight);
textUp->setAlignment(Qt::AlignCenter);
QTextEdit * textBottom =new QTextEdit(QObject::tr("Bottom Widgit"),splitterRight);
textBottom->setAlignment(Qt::AlignCenter);。
splitterMain->setStretchFactor(1,1); //f
splitterMain->setWindowTitle(QObject::tr("Splitter"));
splitterMain->show();
// MainWindow w;
// w.show();
return a.exec();
}
(3)在“main.cpp”文件的开始部分添加以下头文件:
//添加以下头文件
#include "QSplitter"
#include "QTextEdit"
#include "QTextCodec"
(4)运行程序,就可以显示如图一样式了
其中:
(a)QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0) :新建一个QSplitter类对象,作为主分割窗口,设定此分割窗口为水平分割窗口。
(b)QTextEdit *textLeft = new QTextEdit(QObject::tr("Left widgit"),splitterMain) :新建一个QTextEdit类对象,并将其插入主分割窗口中。
(c)textLeft->setAlignment(Qt::AlignCenter) :设定TextEdit中文字的对齐方式,常用的对齐方式有以下几种。
(1)Qt::AlignLeft:左对齐。
(2)Qt::AlignRight:右对齐。
(3)Qt::AlignCenter:文字居中(Qt::AlignHCenter 为水平居中,Qt::AlignVCenter 为垂直居中)
(4)Qt::AlignRight:右对齐。
(5)Qt::AlignRight:右对齐。
(d)QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain) :新建一个QSplitter类对象,作为右分割窗口,设定此分割窗口为垂直分割窗口,并以主分割窗口为父窗口。
(e)splitterRight->setOpaqueResize(false) :调用setOpaqueResize(bool)方法用于设定分割窗口的分割条在拖曳时是否为实时更新显示,若为true则实时更新显示,若为false则在拖曳时只显示一条灰色的粗线条,在拖曳到位并释放鼠标后再显示分割条。默认设置为true。
(f)splitterMain->setStretchFactor(1,1) :调用setStretchFactor()方法用于设定可伸缩控件,它的第1个参数用于指点设置的控件序号,控件序号按插入的先后顺序从0开始依次编号;第2个参数为大于0的值,表示此控件为可伸缩控件。此实例中设定右部的分割窗口为可伸缩控件,当整个对话框的宽度发生改变时,左部的文件编辑框宽度保持不变,右部的分割窗口宽度随整个对话框的大小的改变进行调整。