2010-02-10 42 views
7

Ứng dụng QT của tôi có nhiều cửa sổ và đôi khi, mặc dù các cửa sổ đã mở nhưng đã bị sập dưới các cửa sổ khác, người dùng sẽ chọn một tùy chọn để mở cửa sổ từ thanh thực đơn mainwindow trong trường hợp này tôi chỉ đơn giản là mang nó lên hiện tại. Bây giờ sử dụng QWidget-> nâng cao làm cho cửa sổ này đi trên đầu trang của tất cả các cửa sổ khác nhưng nó không chọn nó và đó là những gì tôi cần phải làm. Tôi đã thử QWidget-> setFocus nhưng điều đó không làm gì cả. Trong thời gian đó, tôi đang sử dụng kết hợp QWidget-> close, tiếp theo là QWidget-> show nhưng tôi muốn biết nếu có lệnh để sử dụng với -> nâng cao.trong Qt, Làm cách nào để đặt cửa sổ là cửa sổ hiện tại?

tôi đã cố gắng:

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

nhưng nó làm việc vì vậy tôi sử dụng:

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

Ý của bạn là gì? ... trên đầu tất cả các cửa sổ khác nhưng không chọn nó? –

+0

Tôi có nghĩa là lệnh pMission-> raise(); làm cho cửa sổ nằm trên tất cả các cửa sổ khác nhưng cửa sổ không trở thành cửa sổ "hiện tại". –

Trả lời

8

Bạn đã bao giờ cố gắng QWidget :: activateWindow?

Từ tập tin trợ giúp, chức năng này sẽ

Thiết lập widget cấp cao nhất chứa widget này là cửa sổ hoạt động. Cửa sổ hiện hoạt là cửa sổ cấp cao có thể nhìn thấy có tiêu điểm nhập bằng bàn phím.

3

Trên MacOS Lion có Qt 4.8.0, raise() là người duy nhất làm việc cho tôi. activateWindow() và setFocus() thì không.

(Tôi không có đủ nghiệp để làm cho nhận xét này về câu trả lời của Mason)

+0

Kể từ Qt 5.3.2, 32 bit, 'activateWindow()' hoạt động như mong đợi (như mô tả của Mason) trong OS X 10.10 Yosemite. – SexyBeast

Các vấn đề liên quan