QSplitter实现自由伸缩滑动窗口部件(要在m_pSplitter中加入frame_4之前,给frame_4设置样式;之后设置无效)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QSplitter实现自由伸缩滑动窗口部件(要在m_pSplitter中加入frame_4之前,给frame_4设置样式;之后设置无效)相关的知识,希望对你有一定的参考价值。

实现代码如下:

 

#include <QSplitter>
QSplitter *m_pSplitter;

 

 

 

[cpp] view plain copy
 
  1.     m_pSplitter = new QSplitter(ui->frame_2);  
  2.     //将Splitter放在UI的frame_2中;  
  3.     m_pSplitter->setGeometry(ui->frame_2->x(),ui->frame_2->y(),ui->frame_2->window()->width(),ui->treeWidget->window()->height());  
  4.   
  5.     m_pSplitter->addWidget(ui->treeWidget);  
  6.   
  7.     QPalette palette;  
  8.     palette.setBrush(ui->frame_4->backgroundRole(),QBrush(QPixmap("./images/background_main.png")));  
  9.     ui->frame_4->setPalette(palette);  
  10.     ui->frame_4->setAutoFillBackground(true);  
  11. //要在m_pSplitter中加入frame_4之前,给frame_4设置样式;之后设置无效;  
  12.     m_pSplitter->addWidget(ui->frame_4);  
  13.   
  14.     m_pSplitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);  
  15.   
  16.     m_pSplitter->setStyleSheet("QSplitter::handle { background-color: grey }"); //设置分界线的样式  
  17.   
  18.     m_pSplitter->setHandleWidth(1);      //设置分界线的宽度  
  19.   
  20. //    m_pSplitter->setStretchFactor(0, -2);  
  21. //    m_pSplitter->setStretchFactor(1, -4);  

 

这样可以手动拖来改变窗体部件的宽度。

改变主窗体大小时,加入下面函数,可以自适应窗体:

 

[cpp] view plain copy
 
  1. void MainWindow::paintEvent(QPaintEvent *)  
  2. {  
  3.     m_pSplitter->setGeometry(0,0,ui->frame_2->window()->width(),ui->treeWidget->window()->height());  
  4. }  

但想在分界线处加一个Button来实现自动缩放窗体部件,还不知道如何实现。

有一篇博文:http://www.cnblogs.com/appsucc/archive/2012/12/19/2825197.html

想实现那篇博文中的效果,却看不太明白,代码太残缺。

研究一下再记下详细笔记。

有人看懂那篇博文,知道如何实现用Button来自动伸缩滑动窗口的,希望可以与我交流下,谢谢!

http://blog.csdn.net/liukang325/article/details/23764949

以上是关于QSplitter实现自由伸缩滑动窗口部件(要在m_pSplitter中加入frame_4之前,给frame_4设置样式;之后设置无效)的主要内容,如果未能解决你的问题,请参考以下文章

如何设置qsplitter中widget的默认宽度

在 QSplitter 中使用 QScrollArea 时的初始窗口大小稍微太小,使得滚动条出现

如何通过 qt 设计器创建 QSplitter ui 类?

一个 QSplitter 并找到当前的小部件

QSplitter 显示两个小部件之间的分隔线或边距

如何隐藏 QSplitter 小部件中的句柄?