1. 程式人生 > >Qt佈局管理QSplitter:設計一個分割視窗功能,整個視窗由三個子視窗組成,各個子視窗之間的大小可隨意拖拽改變(註釋詳細)

Qt佈局管理QSplitter:設計一個分割視窗功能,整個視窗由三個子視窗組成,各個子視窗之間的大小可隨意拖拽改變(註釋詳細)

新建專案,基類選擇“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();
}

其他檔案中的程式碼不做改變。

執行結果如下:

拖拽後: