ich habe mit QT-Designer mir einen Dialog gebaut. Dort habe ich eine Buttonbox mit den Standartbutton OK und Close engefügt. Nun möchte ich gerne, dass auch drücken des Buttons das Speichern der Daten ausgelöst wird und ein Hinweisdialog quasi Fragt. "Möchtest du die Daten speichern und den Dialog beenden? Ja/Nein". So weit so gut. Nur finde ich leider keine möglichkeit ein event auszuläsen, dass den Dialog beendet.
Mein Dilaog wird wie folgt geöffnet:
Code: Alles auswählen
def open_customer_order_dialog(self):
cust_new_prod_order_dialog = QtWidgets.QDialog()
self.cust_new_prod_order_dialog.setupUi(cust_new_prod_order_dialog)
new_prod_order = CustomerOrderOperations(
self.cust_new_prod_order_dialog, self.__customer_number) #Klasse mit allen Operationen die für den Dialog relevant sind
cust_new_prod_order_dialog.exec_()
# Aktualsierung der Bestelltabelle nach schliessen des Dialoges
self.render_customer_order_table()
Code: Alles auswählen
class CustomerOrderOperations:
def __init__(self, dialog, customer_id=0):
self.msbx = MessageBoxes()
self.dialog = dialog
...
init_button_box()
def init_button_box(self):
self.__buttonBox.button(QtWidgets.QDialogButtonBox.Ok).setEnabled(False)
self.__buttonBox.button(QtWidgets.QDialogButtonBox.Ok).clicked.connect(self.create_customer_order)
def create_customer_order(self):
ret = self.__msbx.info_box("Sollen die Kundendaten jetzt gespeichert werden?", "YESNO")
if ret == QMessageBox.Yes:
do = DatabaseOperations()
dpop_return = do.insert_customer_order(self.__customer_id, self.cart_engine.get_warenkorb(), self.order_sum,
self.calc_summery_sum(), self.shipping,
self.__order_date_ed.date().toPyDate())
if dpop_return != 0:
self.__msbx.show_database_error_msg_bx(dpop_return)
else:
self.__msbx.show_message_data_saved_msg_bx()
self.dialog.close() # Das wäre super wenn das gehen würde
VG niesel