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();
}


 
 

发布了21 篇原创文章 · 获赞 21 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/SeekN/article/details/53098233