Qt佈局管理QSplitter:設計一個分割視窗功能,整個視窗由三個子視窗組成,各個子視窗之間的大小可隨意拖拽改變(註釋詳細)
阿新 • • 發佈:2018-12-10
新建專案,基類選擇“QMainWindow”。
main.cpp中的程式碼:
#include "mainwindow.h" #include <QApplication> #include <QSplitter> #include <QTextEdit> #include <QTextCodec> int main(int argc, char *argv[]) { QApplication a(argc, argv); QFont font("ZYSong18030",12); a.setFont(font); //主分割視窗 QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0); //新建一個QSplitter類物件,作為主分割視窗,設定此分割視窗為水平分割視窗 QTextEdit *textLeft=new QTextEdit(QObject::tr("Main Widget"),splitterMain); //新建一個QTextEdit類物件,並將其插入主分割視窗中 textLeft->setAlignment(Qt::AlignCenter); //設定TextEdit中文字的對齊方式(文字居中) //右分割視窗 QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain); //新建一個QSplitter類物件,作為右分割視窗,設定此分割視窗為垂直分割視窗,並以主分割視窗為父視窗 splitterRight->setOpaqueResize(false); //呼叫setOpaqueResize(bool)方法用於設定分割視窗的分割條在拖拽時是否為實時更新顯示 //若設為true則實時更新顯示,若設為false則在拖拽時只顯示一條灰色的粗線條,在拖拽到位並釋放滑鼠後 //再顯示分割條。預設設定為ture。 QTextEdit *textUp=new QTextEdit(QObject::tr("Top Widget"),splitterRight); textUp->setAlignment(Qt::AlignCenter); QTextEdit *textBottom=new QTextEdit(QObject::tr("Bottom Widget"),splitterRight); textBottom->setAlignment(Qt::AlignCenter); splitterMain->setStretchFactor(1,1); //setStretchFactor()用於設定可伸縮控制元件,第一個引數用於指定設定的控制元件序號,控制元件序號按插入的先後 //次序從0起依次編號;第二個引數為大於0的值,表示此控制元件為可伸縮控制元件。 //此例項設定右部分分割視窗為可伸縮控制元件,當整個對話方塊的寬度發生改變時,左部的檔案編輯框寬度保持不斷 //右部的分割視窗寬度隨整個對話方塊大小的改變進行調整 splitterMain->setWindowTitle(QObject::tr("Splitter")); splitterMain->show(); //MainWindow w; //w.show(); return a.exec(); }
其他檔案中的程式碼不做改變。
執行結果如下:
拖拽後: