Qt使用QSplitter實現分割視窗,和拖拉視窗
阿新 • • 發佈:2019-02-07
分割視窗在應用程式中經常用到,它可以靈活分佈窗口布局,經常用於類似檔案資源管理器的視窗,如圖。
// 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(); }