Правильное добавление QMessageBox в QMdiArea - закрытие вопроса - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь добавить QMessageBox в QMdiArea.В настоящее время он работает, как и ожидалось, за исключением того, что в главном окне, содержащем QMdiArea, кнопка X отключается, как только всплывает QMessageBox.Также кнопка X на QMessageBox не работает, но кнопка минимизации работает.

Как мне правильно это сделать?

            msgbox = QMessageBox()
            msgbox.setWindowModality(QtCore.Qt.NonModal)
            msgbox.setWindowTitle('Results')
            msgbox.setText('Test')
            okaybutton = msgbox.addButton('Close', QtWidgets.QMessageBox.YesRole)
            okaybutton.clicked.disconnect()
            okaybutton.clicked.connect(self.closesubwindow)
            graphbutton = msgbox.addButton('View Graphs', QtWidgets.QMessageBox.YesRole)
            graphbutton.clicked.disconnect()
            graphbutton.clicked.connect(self.viewgraph_calculate)
            self.subwindow = QtWidgets.QMdiSubWindow()
            self.subwindow.setWidget(msgbox)
            self.subwindow.setAttribute(QtCore.Qt.WA_DeleteOnClose, True);
            self.subwindow.setWindowFlags(QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.WindowMinimizeButtonHint)
            Data.subwindowarea[-1].addSubWindow(self.subwindow) ## used a list to access the mdiarea in multiple modules
            Data.subwindow.append(self.subwindow)
            self.subwindow.show()

    def closesubwindow(self):
        try:
            newcase = 'Calculate'
            Data.subwindowarea[-1].removeSubWindow(subwindow[-1])
        except:
            tracebackError()

    def viewgraph_calculate(self):
        try:
            print('Graph')
        except:
            tracebackError()
...