1. 程式人生 > >Qt使用QSplitter實現分割視窗,和拖拉視窗

Qt使用QSplitter實現分割視窗,和拖拉視窗

分割視窗在應用程式中經常用到,它可以靈活分佈窗口布局,經常用於類似檔案資源管理器的視窗,如圖。



// main.cpp

<pre name="code" class="cpp">#include "mainwindow.h"
#include <QApplication>
#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,第二個設定0代表是主視窗,無父視窗
    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);
    // 設定分割視窗的分割條在拖動時是否為實時更新 true為實時更新 false則在拖動時只顯示一條灰色的線條
    //在拖動到位並彈起滑鼠後再顯示分隔條
    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
    //設定可伸縮控制元件 第一個引數指定控制元件設定的控制元件序號,該控制元件序號按插入的先後次序依次從0開始編號
    //第二個引數大於0表示此控制元件為伸縮控制元件 此例中設定右部分割視窗為可伸縮控制元件
    splitterMain->setStretchFactor(1,1);
    splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();
    return a.exec();
}