先上結果圖:
官方文檔說明:
The QSplitter class implements a splitter widget; A splitter lets the user control the size of child widgets by dragging the boundary between them. Any number of widgets may be controlled by a single splitter. The typical use of a QSplitter is to create several widgets and add them using insertWidget() or addWidget(). 也就是說QSplitter 是一個分離控件的一個UI控件。被分離的控件之間的邊界可以被調整,常見的創建方式是:
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);
在文檔中值得注意的是:添加 QLayout進入QSplitter(或者是設置layout 把splitter作為layout的parent)是不被支持的。可以使用addWidget代替之。
上代碼:
1 void 2 MainWindow::setUIComponent() 3 { 4 QSplitter * pSplitter = new QSplitter(Qt::Horizontal, ui->centralWidget); 5 6 ///-------------------------------------------------------------- 7 8 QSplitter * LeftSplitter = new QSplitter(Qt::Vertical, pSplitter);//可以使用設置parent來代替addWidget,初始的方式是橫向的 9 10 QTextEdit * RightEdText = new QTextEdit(pSplitter); 11 RightEdText->setText("right - all"); 12 13 ///-------------------------------------------------------------- 14 15 QTextEdit * LeftTextEditUp = new QTextEdit(LeftSplitter); 16 LeftTextEditUp->setText("left - up"); 17 QTextEdit * LeftTextEditDown = new QTextEdit(LeftSplitter); 18 LeftTextEditDown->setText("left - down"); 19 20 pSplitter->setStretchFactor(0,4);//設置比例 21 pSplitter->setStretchFactor(1,1); 22 23 LeftSplitter->setStretchFactor(0,4); 24 LeftSplitter->setStretchFactor(1,1); 25 }