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代表可伸缩。

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

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

原文地址:https://www.cnblogs.com/invisible2/p/6783637.html