1. 程式人生 > 其它 >Qt 佈局管理之分割視窗

Qt 佈局管理之分割視窗

使用QSplitter進行視窗分割,使用 Horizontal 建立水平的分割視窗textleft 建立一個子分割視窗splitterRight 放在進去預設就會到右側,這裡繼續設定一下setOpaqueResize函式設定右側的拖拽不重新整理只顯示一個粗線條,
在這個右側的子分割視窗中新增兩個textEidt分別處於上下兩個視窗 然後在主視窗中設定了右側的兩個子視窗為可伸縮控制元件。



#include<QFont>
#include<QSplitter>
#include <QApplication>
#include<QTextEdit>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QFont font("ZYSong18030",12);
    a.setFont(font);
    //主視窗分割
    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);
    //setOpaqueResize 設定分割視窗的分割條在拖曳時是否為實時更新顯示,
    //若設為true則實時更新顯示,若設為false則在拖曳時只顯示一條灰色的粗線條,
    //在拖曳到位並釋放滑鼠後再顯示分割條。預設設定為true
    //splitterRight 中的up
    QTextEdit*textUp = new QTextEdit(QObject::tr("Top widget"),splitterRight);
    textUp->setAlignment(Qt::AlignCenter);
    //splitterRight 中的bottom
    QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom Widget"),splitterRight);
    textBottom->setAlignment(Qt::AlignCenter);

    splitterMain->setStretchFactor(1,1);
    //呼叫setStretchFactor()方法用於設定可伸縮控制元件,
    //它的第1個引數用於指定設定的控制元件序號,控制元件序號按插入的先後次序從0起依次編號;
    //第2個引數為大於0的值,表示此控制元件為可伸縮控制元件。此例項中設定右部分分割視窗為可伸縮控制元件,
    //當整個對話方塊的寬度發生改變時,左部的檔案編輯框寬度保持不變,右部的分割視窗寬度隨整個對話方塊大小的改變進行調整。
    splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();

    return a.exec();
}

有圖有真相