• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
invisible_man
博客园    首页    新随笔    联系   管理    订阅  订阅

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

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

 

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

posted @ 2017-04-28 23:01  invisible_man  阅读(259)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3