2015-01-09 1 views
5

기본 창에서 호출되는 UI 창이 있습니다. 나는 그것을 모달이 아닌 것으로 보이기를 원하지만, 부모의 위에 머무르고, 부모가 최소화되어 있다면 그것을 최소화해야한다.Qt : 포커스가 없어지더라도 상위 창 위에 자식 창을 유지하십시오.

사용자가 둘 다 변경하려는 경우 가능해야하며 사용자가 닫지 않으면 닫히지 않습니다. 그 아이는 항상 부모의 위에 머무를 것이지만 다른 것들의 위에 있지는 않을 것입니다. 아이가 시작되었습니다 동안

m_child->show(); 
m_child->activateWindow(); 

위의 장소 부모의 상단에있는 아이, 그것은 부모에 대한 작업을 할 수 있습니다 ...하지만 포커스를 잃을 경우 아이는 부모의 뒤에 숨겨져 있습니다.

m_child->show(); 
m_child->activateWindow(); 
m_child->raise(); 

변경 사항 없음. 아이가 여전히 상단에 표시됩니다 ...하지만 부모를 최소화하는 것은 물론 아이를 최소화하지 않는 동안

Qt::WindowFlags flags = m_child->windowFlags(); 
m_child->setWindowFlags(flags | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint); 
m_child->show(); 
m_child->activateWindow(); 

아이를 사용

내가 원하는대로, 내가 부모에서 작업 할 수 있습니다, 상단에 그 아이는 모든 창 위에 머물러야합니다 (부모의 위에 머물러 있어야합니다).

"도구 상자 스타일"효과를 만들려면 어떻게해야합니까? 부모가 활성화되어 있지만 최소화 된 상태에서 아이를 부모 위에 올려 놓는 방법 부모가 최소화되었을 때의 자녀?

나는 또한 모든 창 플래그를 실험했지만 포커스를 잃었을 때 아이를 숨길 수 있습니다.

답변

9

Qt::Tool 플래그를 도구 상자 위젯에 추가하고 기본 창을 상위로 설정하여이 동작을 수행 할 수 있습니다.

http://doc.qt.io/qt-5/qt.html#WindowType-enum

+0

고맙습니다! 나는 Qt :: Tool 플래그를 시도했지만 부모에 대해 몰랐다. 이것은 완벽하게 작동한다! – Thalia

+1

Mac의 경우, 내가 원하는대로 동작하지 않습니다. "도구"창이 항상 맨 위에 머물러 있어도 앱을 최소화 할 때 ... setAttribute (Qt :: WA_MacAlwaysShowToolWindow, false)를 시도했지만 아무런 차이가없는 것 같습니다. .. 거기에 Mac에서 Windows 동작을 모방 할 것입니다 어떤 플래그가 무엇입니까? – Thalia

관련 문제