Qt setParent()不显示子窗口小部件

Qt setParent()不显示子窗口小部件,qt,qt4,qt-designer,Qt,Qt4,Qt Designer,我从QWidget继承了一个名为TitleBar的类,我创建了一个新的小部件,并执行了setparent(),但在执行setparent之后,子部件没有显示,它只在注释setparent之后显示,但没有与父部件对齐,它显示在一些随机位置,在最大化视图上只显示在正确的位置 TitleBar::TitleBar(QWidget *parent) : QWidget(parent) { m_jobSubmitWidget = csJobSubmitPoolWidget::getSubmitPo

我从QWidget继承了一个名为TitleBar的类,我创建了一个新的小部件,并执行了setparent(),但在执行setparent之后,子部件没有显示,它只在注释setparent之后显示,但没有与父部件对齐,它显示在一些随机位置,在最大化视图上只显示在正确的位置

TitleBar::TitleBar(QWidget *parent) : QWidget(parent)  
{
  m_jobSubmitWidget = csJobSubmitPoolWidget::getSubmitPoolInst();
 // m_jobSubmitWidget->setParent(QWidget::window());
}

void csTitleBar::BtnClicked()
{
    QPoint pos = m_queueBtn->pos() + m_serverToolBar->pos() + QPoint(-m_jobSubmitWidget->width() + m_queueBtn->width(),62); // these are member variables in TitleBar class
    // pos shows always same value on moving parent widget

    if(itemCount > 2){
        m_jobSubmitWidget->move(pos);
        m_jobSubmitWidget->show();
        m_jobSubmitWidget->setFocus();
    }

}

我真的建议你好好读一读

具有父对象的QWidget显示在其父对象中(QDialog除外)。如果一个小部件没有父部件,它将显示为一个单独的窗口

将小部件与
QWidget::window()
的结果相关联有点危险,因为您不知道将返回哪个小部件,所以您不知道子小部件将在哪里结束

此外,您不需要对具有父级的小部件调用
show()
。默认情况下,它们的可见性遵循父级可见性