2013-04-10 3 views
0

다른 창에 자식 인 QMainWindow이 있습니다. 사용자가 부모 윈도우의 아무 곳이나 클릭하면 자식 창이 최소화되지 않게 할 수 있습니다. 자식 창은 포커스를 잃고 사용자는 부모 창에서 계속 작업 할 수 있어야합니다.Qt : 배경을 최소화하지 않고 차단하지 않는 창을 만드는 방법

이 기능은 아래와 같이 libreoffice/excel/openoffice 등의 찾기/바꾸기 대화 상자와 유사합니다. 작업 표시 줄에는 부모 응용 프로그램 창만 표시되고 자식 창은 작업 표시 줄에 표시되지 않습니다.

enter image description here

날이를 달성하는 데 도움이 수 QMainWindow에 어떤 신호가 있습니까? 또는 이것을 수행하는 가장 좋은 방법은 무엇입니까?

답변

5

새 창을 Dialog으로 열어 부모에게 주면 부모 위에 남겨 두어야합니다. QMainWindow을 사용하고 있기 때문에 이것을 생성자와 함께 전달할 수 있습니다. QDialog을 사용하려면 setModal(False)으로 모덜리스로 설정해야합니다. 그렇지 않으면 부모를 차단합니다.

작은 예 :

import sys 
from PyQt4 import QtGui, QtCore 

class Window(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     super(Window, self).__init__(parent) 

     w = QtGui.QWidget() 
     layout = QtGui.QVBoxLayout(w) 
     self.button = QtGui.QPushButton('Open Dialog') 
     self.text = QtGui.QTextEdit() 

     layout.addWidget(self.button) 
     layout.addWidget(self.text) 

     self.setCentralWidget(w) 

     self.button.clicked.connect(self.openDialog) 

    def openDialog(self): 
     self.dialog = QtGui.QMainWindow(self, QtCore.Qt.Dialog) 
     self.dialog.show() 

app = QtGui.QApplication(sys.argv) 
w = Window() 
w.show() 
sys.exit(app.exec_()) 
+0

와우! 나는 일하는 예를 기대하지 않았다. .. 많이 감사합니다. – vinayan