2015-01-09 375 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 2015-01-09 23:12:56

+1

對於Mac而言,行爲並非如我所願 - 即使我將應用程序最小化時,「工具」窗口始終保持在最前端...我試過setAttribute(Qt :: WA_MacAlwaysShowToolWindow,false),但它似乎沒有任何區別..是否有任何標誌,將模仿Mac上的Windows行爲? – Thalia 2015-01-13 15:26:59