2010-02-10 39 views
7

QT uygulamasında birden çok pencere var ve bazen de pencereler zaten açık olsa da diğer pencerelerin altına gömülse bile, kullanıcı mainwindow menubar'ından birini açmak için bir seçenek seçecektir. Bu durumda, yalnızca onu getirmek ve kullanmak istiyorum. mevcut olanı. Şimdi QWidget-> zam kullanarak bu pencere diğer tüm pencerelerin üstüne çıkıyor, ancak onu seçmiyor ve ne yapmam gerekiyor. QWidget-> setFocus'u denedim ama bu hiçbir şey yapmıyor. Bu arada, QWidget-> close'u ve ardından QWidget-> show kombinasyonunu kullanıyorum ancak kullanmak için bir komut olup olmadığını bilmek istiyorum. bu yüzden kullanılan, Pencereyi geçerli pencere nasıl yapabilirim?

 pMission->raise(); 
     pMission->setFocus(Qt::ActiveWindowFocusReason); 

ama işe yaramadı:

 pMission->close(); 
     pMission->show(); 
+0

Ne "... diğer tüm pencerelerin üstünde gitmek ama onu seçin doesnt" demek? –

+0

Komut pMission-> yükselt(); Pencereyi diğer tüm pencerelerin üstüne getirir, ancak "geçerli" pencereye dönüşmez. –

cevap

8

Hiç QWidget :: activateWindow denediniz

Denedim? yardım dosyasından

, bu işlev

gidiyor etkin pencere olmasını widget'ı içeren üst seviye widget'ı ayarlar. Etkin bir pencere, klavye giriş odağına sahip üst düzey bir görünür penceredir.

3

MacOS Lion'da Qt 4.8.0 ile, yükseltme() benim için çalışan tek şey oldu. activateWindow() ve setFocus() yapmadı.

(Bu Mason'un cevabı bir yorum yapmak için yeterli karması yok)

+0

Qt 5.3.2'den itibaren 32 bit, activateWindow() işlevi, OS X 10.10 Yosemite'de beklendiği gibi çalışıyor (Mason'un anlattığı gibi). – SexyBeast

İlgili konular