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

 

實例:

來源於:https://blog.csdn.net/a649518776/article/details/6633857

#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); //開始填充右邊的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(); return a.exec(); }

解析:

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代表可伸縮。

這里設置右邊的可伸縮。當拉伸整個窗口時候,左邊保持原來寬度。

拉伸后,我們發現左邊的寬度不變。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM