网上很多QSplitter的例子都是分割完的子窗口带一个edit控件,list控件,可项目需要子窗口用已有dialog进行填充,并能自由切换,遇到最郁闷的问题是填充完后自定义的dialog不能充满整个分割子窗口,现记录下解决方案:
QSplitter* mainSplitter;
QMainWindow * mainQw;
pFrm = new frmFiSetDlg();
mainSplitter = new QSplitter(Qt::Horizontal);
mainSplitter->addWidget(pFrm);
mainQw = new QMainWindow(this);
mainSplitter->addWidget(mainQw);
mainSplitter->setStretchFactor(1, 1);
setCentralWidget(mainSplitter);
QSplitterHandle *splitterHandle = mainSplitter->handle(1);
if(splitterHandle)
{
//Disable the Middle Line, it can't adjust.
splitterHandle->setDisabled(true);
}
m_pDlgObj = new frmMainDlg(mainQw)//需要进行切换的dialog
setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);//frmMainDlg构造函数中填加
//最重要的处理,让dialog填充满分割子窗口
if(m_pDlgObj != NULL && !m_pDlgObj->isHidden()){
mainQw->takeCentralWidget();m_pDlgObj->hide();}
if (m_pDlgObj != NULL){
mainQw->setCentralWidget(m_pDlgObj);m_pDlgObj->show();}