Qt窗⼝分割器QSplitter类使⽤详解
1、先看⼀下它的构造⽅法
(1)QSplitter(QWidget *parent = Q_NULLPTR)
(2)QSplitter(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR)
默认不传参数情况下调⽤(1),它的参数默认是Q_NULLPTR(相当于0),代表是主窗⼝,⽆⽗窗⼝。
调⽤(2)的时候需要传递⾄少⼀个参数Qt::Orientation,这个参数通过Qt::Horizontal 和 Qt::Vertical来设定为⽔平分割或垂直分割。
看⼀个例⼦:
QSplitter *splitter = new QSplitter(parent);
QListView *listview = new QListView;
QTreeView *treeview = new QTreeView;
QTextEdit *textedit = new QTextEdit;
splitter->addWidget(listview);
splitter->addWidget(treeview);
splitter->addWidget(textedit);
实例:
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QSplitter>
#include <QTextCodec>
#include <QTextEdit>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//设置字体
QFont font("ZYSong18030",12);
a.setFont(font);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
//主splitter,以下填充text和⼦splitter
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);
qt listview
/
/开始填充右边的splitter,放上两个text
QTextEdit *textTop=new QTextEdit(QObject::tr("Right Top Widget"),splitterRight);
textTop->setAlignment(Qt::AlignCenter);
QTextEdit *textBottom=new QTextEdit(QObject::tr("Right Bottom Widget"),splitterRight);
textBottom->setAlignment(Qt::AlignCenter);
//设置主splitter
splitterMain->setStretchFactor(1,1);
splitterMain->setWindowTitle(QObject::tr("Splitter"));
splitterMain->show();
();
}
解析:
1.QSplitter的构造⽅法:
QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);
第⼀个参数通过Qt::Horizontal 和 Qt::Vertical来设定为⽔平分割或垂直分割。第⼆个设定0代表是主窗⼝,⽆⽗窗⼝。
不过⼦splitter设置的
new QSplitter(Qt::Vertical,splitterMain);
代表主窗⼝是splitterMain。则⼦splitter就被添加到splitterMain中。
添加时为从左⾄右(或从上⾄下)添加;
2.添加QTextEdit控件。
QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);
第⼀个参数设置⽂本内容,第⼆个参数设置主窗体。
3.设置拖动时是否实时更新
splitterRight->setOpaqueResize(false);
false为不实时更新——在拖动时候只显⽰⼀条灰⾊的线条,在拖动到位并释放⿏标后再显⽰分割条。默认为true——实时更新。
4.设定可伸缩控件:
splitterMain->setStretchFactor(1,1);
第⼀个参数代表控件序号,第⼀个序号为0.后⾯参数0代表不可伸缩,⾮0代表可伸缩。
这⾥设置右边的可伸缩。当拉伸整个窗⼝时候,左边保持原来宽度。
拉伸后,我们发现左边的宽度不变。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。