2015-01-09 21 views
5

Ana pencerenin aradığı bir UI pencerem var. Modal olmayan olmasını isterim, ancak ebeveynin üstünde kalır ve eğer ebeveyn küçültülürse, onunla en aza indirilir. Qt: Odağı kaybettiğinde bile üst pencerenin üst kısmındaki alt pencereyi tutun.

Kullanıcı, her ikisinde de değişiklik yapmak istiyorsa, kullanıcı kapatamıyorsa, çocuk kapatılmalı ve çocuk kapatılmamalıdır. Çocuk her zaman ebeveynin üstünde kalır - ama başka hiçbir şeyin üstünde olmaz. Çocuk başladıktan ederken

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

yukarıdaki yerlerde ebeveyn üstünde çocuk, bu ebeveyn üzerinde çalışmaya izin verir ... ama odak kaybederse çocuk ebeveyn arkasına gizlenmiştir.

( ) çocuk hala üstünde gösterilir ... ama ebeveyn minimize yanı çocuğu minimize etmez iken

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

çocuk Kullanılması

istediğim gibi, ben ebeveyn üzerinde çalışabilirsiniz, üstte ise ve çocuk TÜM pencerelerin üstünde kalır (yalnızca üst öğenin üstünde kalmalıdır)

"Araç kutusu stili" efektini nasıl yapabilirim? - Ebeveyn etkinken alt öğeyi üstte tutun, ancak küçültün. ebeveyn küçültüldüğünde çocuk?

Ayrıca tüm pencere bayraklarını denedim, ancak çocuğun odağı kaybettiğinde gizlenmesine izin veriyorlar.

cevap

9

Araç kutusu küçük aracına Qt::Tool bayrağını ekleyerek ve ana pencereyi üst öğesi olarak ayarlayarak bu davranışı gerçekleştirebilirsiniz.

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

+0

Teşekkür ederiz! Qt :: Tool bayrağını denedim ama ebeveyn hakkında bilmiyordum, bu mükemmel çalışıyor! – Thalia

+1

Mac için, davranış istediğim gibi değil - uygulamayı küçültürken bile "araç" penceresi her zaman üstte kalır ... setAttribute (Qt :: WA_MacAlwaysShowToolWindow, false) denedim ama fark yaratmıyor gibi görünüyor .. mac üzerinde windows davranışını taklit edecek herhangi bir bayrak var mı? – Thalia