• 5984阅读
  • 4回复

[提问]QSplitter 窗口切割问题 [复制链接]

上一主题 下一主题
离线xuxb
 
只看楼主 倒序阅读 楼主  发表于: 2012-12-07
关键词: 窗口切割问题
QSplitter 窗口切割问题 切割窗口成功 但是当最大化窗口后  切割的左右窗口 没有变化啊??请问是怎么回事啊??
void QBaseFormCenter::createSplitter()
{
  m_pMainSplitter =  new QSplitter(Qt::Horizontal,this); //左右切割
  m_pMainSplitter->resize(this->size()); // 重置切割窗口对象大小


  m_pRight = new formRight(this);
  m_pLeft  = new formLeft(this);
  m_pLeftInfo = new formLeftInfo(this);
  m_pStackWidget = new QStackedWidget(this);

  //添加到QStackedWidget 对象中
  m_pStackWidget->addWidget(m_pLeft);
  m_pStackWidget->addWidget(m_pLeftInfo);
  m_pStackWidget->setCurrentIndex(m_nIndex);
  m_pStackWidget->resize(this->m_pLeft->size());
  
  //将窗口插入切割Splitter对象中
  m_pMainSplitter->addWidget(m_pStackWidget);
  m_pMainSplitter->addWidget(m_pRight);

  m_pMainSplitter->setStyleSheet("QSplitter::handle { background-color: black }"); //设置分界线的样式
  QSplitterHandle *handle = m_pMainSplitter->handle(1); //获得分割线对象
  if(handle)
  {
    handle->setFixedWidth(1);//设置分割线宽度
  }
  
  //下面是否设置正确  方向扩展??
  m_pStackWidget->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  m_pRight->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
  m_pMainSplitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);


  //设置伸缩项
  m_pMainSplitter->setStretchFactor(0,1);
  
  //设置分割线位置
  QList<int> list;
  list.append(581);
  list.append(263);
  m_pMainSplitter->setSizes(list);
}
承接C/C++ MFC Qt  网络通信等项目!!!
离线xuxb
只看该作者 1楼 发表于: 2012-12-07

m_pStackWidget    == 区域1
m_pRight                 == 区域2
最大化后 区域1 没有变化
承接C/C++ MFC Qt  网络通信等项目!!!
离线gesturewei
只看该作者 2楼 发表于: 2012-12-08
楼主尝试将m_pStackWidget、m_pRight的父对象设为m_pMainSplitter,而不是用addWidget方法,QSplitter继承自QFrame,因此可以在构造的时候直接作为那两个对象的父对象
离线xuxb
只看该作者 3楼 发表于: 2012-12-08
不行啊 我觉得可能是我设置了
m_pMainSplitter->resize(this->size()); // 重置切割窗口对象大小  这句代码的缘故
承接C/C++ MFC Qt  网络通信等项目!!!
离线gesturewei
只看该作者 4楼 发表于: 2012-12-12
我直接把QSplitter当做主窗口的CentralWidget,插进去没有布局问题
快速回复
限100 字节
 
上一个 下一个