尝试着翻译一下,权当做读书笔记:
QSplitter实现一个分裂器窗口部件
使用分裂器(QSplitter)布局窗口控件,可以让用户通过拖拽边界来控制分裂器(QSplitter)的子部件。分裂器(QSplitter)的基本用法就是,创建几个窗口部件,然后利用分裂器(QSplitter)的成员函数insertWidget()或者addWidget()将这些部件添加到分裂器(QSplitter)中。
下面的例子将会展示一个QListView, QTreeView,和QTextEdit被添加到分裂器(QSplitter)中。
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);
分裂器(QSplitter)默认将它的子部件水平布局,你可以通过调用setOrientation(Qt::Vertical)方法来将它的自部件垂直布局。
默认情况下,包含在分裂器(QSplitter)中的控件,会随着分裂器(QSplitter)的大小变化而变化大小的。(当然是在minimumSizeHint()或者(minimumSize()和maxmumSize())之间的大小)
默认情况下,分裂器(QSplitter)动态的调整内部控件的大小,如果你不想动态改变内部控件的大小,你可以通过调用setOpaqueResize(false)方法来设置。
窗口部件的初始分布是由它的初始大小和伸展因子共同决定的,你也可以用setSizes()方法来设置所有的窗口部件的大小。sizes()方法返回用户设置的大小。或者,你可以分别用saveState()和restoreState()从QByteArray保存或者恢复窗口部件的大小。
当你用hide()方法隐藏一个子类控件时,它的空间会被其它的部件占用。当你重新调用show()方法展示这个部件的时候,又会恢复之前的布局。
注意:添加一个QLayout在QSplitter中是不可以的,同样,也不可以将QSplitter添加到QLayout中去。