• Qt5


    最简单的分割窗体

     
    1. #include <QApplication>    
    2. #include <QLabel>    
    3. #include <QSplitter>  
    4.   
    5. int main(int argc, char *argv[])    
    6. {    
    7.     QApplication app(argc, argv);    
    8.   
    9.     QSplitter * mainSplitter = new QSplitter(Qt::Horizontal);  
    10.     mainSplitter->setHandleWidth(10);  
    11.      mainSplitter->setStyleSheet("QSplitter::handle { background-color: black }"); //设置分界线的样式  
    12.     QLabel *label = new QLabel(QObject::tr("TestA"));  
    13.     QLabel *label2 = new QLabel(QObject::tr("TestB"));  
    14.   
    15.     mainSplitter->addWidget(label2);  
    16.     mainSplitter->addWidget(label);  
    17.     mainSplitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);  
    18.     mainSplitter->show();   
    19.   
    20.     return app.exec();    
    21. }   


    结果截图如下

    竖向排列子窗口

    [cpp] view plain copy
     
    1. #include <QApplication>    
    2. #include <QLabel>    
    3. #include <QSplitter>  
    4.   
    5. int main(int argc, char *argv[])    
    6. {    
    7.     QApplication app(argc, argv);    
    8.   
    9.     QSplitter * mainSplitter = new QSplitter(Qt::Horizontal);  
    10.     mainSplitter->setHandleWidth(10);  
    11.      mainSplitter->setStyleSheet("QSplitter::handle { background-color: black }"); //设置分界线的样式  
    12.     QLabel *label = new QLabel(QObject::tr("TestA"));  
    13.     QLabel *label2 = new QLabel(QObject::tr("TestB"));  
    14.   
    15.     mainSplitter->addWidget(label2);  
    16.     mainSplitter->addWidget(label);  
    17.     mainSplitter->setOrientation(Qt::Vertical);  
    18.     mainSplitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);  
    19.     mainSplitter->show();   
    20.   
    21.     return app.exec();    
    22. }   

    结果截图如下



    http://blog.csdn.net/a649518776/article/details/6633857

    [cpp] view plain copy
     
    1. #include <QApplication>     
    2. #include <QSplitter>    
    3. #include <QTextCodec>    
    4. #include <QTextEdit>    
    5. int main(int argc, char *argv[])    
    6. {    
    7.     QApplication a(argc, argv);    
    8.     //设置字体    
    9.     QFont font("ZYSong18030",12);    
    10.     a.setFont(font);    
    11.     //The QTextCodec class provides conversions between text encodings  
    12.     //Returns a pointer to the codec most suitable for this locale.On Windows, the codec will be based on a system locale.  
    13.     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());    
    14.     //主splitter,以下填充text和子splitter    
    15.     //QSplitter::QSplitter ( Qt::Orientation orientation, QWidget * parent = 0 )  
    16.     QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);    
    17.     QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);    
    18.     textLeft->setAlignment(Qt::AlignCenter);    
    19.     QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain);    
    20.     splitterRight->setOpaqueResize(false);    
    21.     //开始填充右边的splitter,放上两个text    
    22.     QTextEdit *textTop=new QTextEdit(QObject::tr("Right Top Widget"),splitterRight);    
    23.     textTop->setAlignment(Qt::AlignCenter);    
    24.     QTextEdit *textBottom=new QTextEdit(QObject::tr("Right Bottom Widget"),splitterRight);    
    25.     textBottom->setAlignment(Qt::AlignCenter);    
    26.     //设置主splitter    
    27.     splitterMain->setStretchFactor(1,1);    
    28.     splitterMain->setWindowTitle(QObject::tr("Splitter"));    
    29.     splitterMain->show();    
    30.     return a.exec();    
    31. }   

    解析:

    1.QSplitter的构造方法:

    QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);

    第一个参数通过Qt::Horizontal 和 Qt::Vertical来设定为水平分割或垂直分割。第二个设定0代表是主窗口,无父窗口。

    不过子splitter设置的

    new QSplitter(Qt::Vertical,splitterMain);
    
    
    

    代表主窗口是splitterMain。则子splitter就被添加到splitterMain中。

    添加时为从左至右(或从上至下)添加;

    2.添加QTextEdit控件。

    QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);

    第一个参数设置文本内容,第二个参数设置主窗体。


    3.设置拖动时是否实时更新

    splitterRight->setOpaqueResize(false);

    false为不实时更新——在拖动时候只显示一条灰色的线条,在拖动到位并释放鼠标后再显示分割条。默认为true——实时更新。

    4.设定可伸缩控件:

    splitterMain->setStretchFactor(1,1);

    第一个参数代表控件序号,第一个序号为0.后面参数0代表不可伸缩,非0代表可伸缩。

    这里设置右边的可伸缩。当拉伸整个窗口时候,左边保持原来宽度。

    拉伸后,我们发现左边的宽度不变

  • 相关阅读:
    某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
    BAT面试上机题从3亿个ip中找出访问次数最多的IP详解
    Android 最流行的吸顶效果的实现及代码
    postgresql某进程占用cpu资源过高,降不下来
    媳妇要转java开发,我该怎么办?
    【原创】微信公众号电影网站域名被屏蔽完美解决方案!
    java如何对List集合中的元素进行排序(请收藏)
    【转】多语言的正则表达式,我们应该掌握
    【转】app之YdbOnline说明文档
    [敏捷开发实践](0) 开始
  • 原文地址:https://www.cnblogs.com/invisible2/p/6783637.html
Copyright © 2020-2023  润新知