2017-10-30 3 views
0

QWidget에서 상속받은 Titlebar라는 클래스가 있습니다. 다음 코드는 제목 표시 줄 클래스의 생성자 내부에 간다 : m_queueBtn->pos()를 인쇄하는 동안부모 위젯의 크기를 변경하거나 이동할 때 QToolButton의 위치가 변경되지 않습니다.

m_queueBtn = new QToolButton; 
m_serverToolBar = new QToolBar; 
m_serverToolBar->addWidget(m_queueBtn); 

QPoint pos = m_queueBtn->pos(); 

, 항상 대신 크기 조정 또는 이동의 동일한 값을 보여주는 것.

+0

실제로 위치를 인쇄하는 상위의 크기를 조정하거나 한 번 생성자에서 때? – xander

답변

1

QToolButtonsize-policy은 기본적으로 Fixed/Fixed이므로 부모의 크기를 조정해도 아무런 효과가 없습니다. 또한 pos()은 상위 위젯에 상대적인 좌표를 반환합니다. 다시 부모를 이동해도 아무런 효과가 없습니다.

QPoint pos = m_queueBtn->mapToGlobal(m_queueBtn->pos()); 

또는 자녀 중 하나에 상대적인 위치 좌표를 번역 : 당신이 (바탕 화면을 기준으로 예) 자식 위젯의 글로벌 위치를 얻고 싶다면

, 당신은 mapToGlobal 사용할 수 있습니다 조상 위젯, 당신은 mapTo 사용할 수 있습니다

QPoint pos = m_queueBtn->mapTo(ancestor, QPoint(0, 0)); 
관련 문제