versuche mich in pyqt-MDI einzuarbeiten.
Das Öffnen und Schließen der SubWindows funktioniert.
Nun möchte ich nach dem das Hauptfenster (SubWindow) im MDI geschlossen ist, dass das MDI-Fenster automatisch geschlossen wird.
Eine Möglichkeit habe ich schon gefunden, die funktioniert (closeEvent, siehe Code), leider muss ich dazu selbst aktiv werden, um dass das MDI-Fenster geschlossen wird.
Ich habe auch über den eventFilter, verucht das hin zubekommen, doch das funktioniert leider nicht.
Würde mich freuen, wenn Ihr mir dabei helfen könnt!
Ich poste hier mal den Code:
Code: Alles auswählen
class MainWindow(QtGui.QMainWindow):
def __init__(self, title, dataList, header, columnWidths, *args):
super(MainWindow, self).__init__()
self.setWindowTitle("MDI demo")
self.installEventFilter(self)
self.mdi_area = QtGui.QMdiArea()
self.mdi_area.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.mdi_area.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
# First SubWindow
window = Window(self.mdi_area, title, dataList, header, columnWidths)
self.mdi_area.addSubWindow(window)
self.setCentralWidget(self.mdi_area)
# Resize SubWindow to CentralWidget
self.mdi_area.tileSubWindows()
def closeEvent(self, event):
result = QtGui.QMessageBox.question(self,
"Confirm Exit...",
"Are you sure you want to exit ?",
QtGui.QMessageBox.Yes| QtGui.QMessageBox.No)
event.ignore()
if result == QtGui.QMessageBox.Yes:
event.accept()
def eventFilter(self, widget, event):
if event.type() == QtCore.QEvent.KeyPress and widget is self:
key = event.key()
if key == QtCore.Qt.Key_Escape:
#QtGui.QCloseEvent(event)
event.accept()
elif key in (QtCore.Qt.Key_Return, QtCore.Qt.Key_Enter):
#self.datasetView()
pass
return True
return QtGui.QWidget.eventFilter(self, widget, event)