2017-10-30 7 views
0

표시되지 나는 새로운 위젯을 만들고는, setParent 않았다()하지만 setParent가 불려 갔을 때 자식 위젯이 표시되지 수행 한 후, 그것은 단지 setParent가 불려 갔을를 주석 만 alligned되지 후 보여주고있다 부모와 함께 자사의 최대화보기에, 어떤 임의의 지역 정보에 표시가 아니라 그것은 바로 이곳는, setParent()는 내가 제목 표시 줄이라는 클래스는 QWidget로부터 상속 한 자식 위젯

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(); 
    } 

}

답변

1

난 정말 당신이 Qt documentation에 좋은 읽기를 취할 것을 제안에 보여줍니다. 부모가

QWidgets은 (인 QDialog 제외) 부모의 내부에 표시됩니다. 위젯은 부모가없는 경우는 별도의 창으로 표시됩니다.

QWidget::window()의 결과를 위젯으로 양육하는 것은 실제로 어떤 위젯이 반환 될지 모르기 때문에 위험합니다. 따라서 위젯이 어디에서 끝날지 모릅니다.

또한 당신은 부모가 위젯에 show()를 호출 할 필요가 없습니다. 기본적으로 가시성은 부모의 가시성을 따른다.

관련 문제