QT 分割窗口,并用dialog填充分割的子窗口

来源:互联网 发布:高晓松评价张学良 知乎 编辑:程序博客网 时间:2024/05/18 00:48

网上很多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();
             }


0 0
原创粉丝点击