翻译:Qt帮助文档——分裂器(QSplitter)

尝试着翻译一下,权当做读书笔记:

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);

当想将某个窗口控件利用addWidget()或者insertWidget()函数加入一个分裂器(QSplitter)时,如果这个窗口控件已经存在另外一个分裂器(QSplitter)中,那么这个窗口控件就会移动到这个新的分裂器(QSplitter)中去。这个功能可以用来重新排列加入这个分裂器(QSplitter)的窗口部件。你可以用indexPf(),Widget(),或者count()方法来获得分裂器(QSplitter)中的窗口部件。

分裂器(QSplitter)默认将它的子部件水平布局,你可以通过调用setOrientation(Qt::Vertical)方法来将它的自部件垂直布局。

默认情况下,包含在分裂器(QSplitter)中的控件,会随着分裂器(QSplitter)的大小变化而变化大小的。(当然是在minimumSizeHint()或者(minimumSize()和maxmumSize())之间的大小)

默认情况下,分裂器(QSplitter)动态的调整内部控件的大小,如果你不想动态改变内部控件的大小,你可以通过调用setOpaqueResize(false)方法来设置。

窗口部件的初始分布是由它的初始大小和伸展因子共同决定的,你也可以用setSizes()方法来设置所有的窗口部件的大小。sizes()方法返回用户设置的大小。或者,你可以分别用saveState()和restoreState()从QByteArray保存或者恢复窗口部件的大小。

当你用hide()方法隐藏一个子类控件时,它的空间会被其它的部件占用。当你重新调用show()方法展示这个部件的时候,又会恢复之前的布局。

注意:添加一个QLayout在QSplitter中是不可以的,同样,也不可以将QSplitter添加到QLayout中去。





你可能感兴趣的:(ListView,qt,布局,控件,treeview)