在酒店预订系统中,我有几个QDateEdit字段映射到我表单中的数据库记录。用户更新任何这些字段后,程序会进行检查以确保房间可用。如果房间不可用,我想将QDateEdit恢复到原始值,并让用户知道QMessageBox。
QLineEdit有一个undo方法,可以按我的意思运行。
此外,如果我尝试通过从模型中提取信息来重置QDateEdit,它会再次触发dateChanged信号。这不是一个大问题,因为我知道原始值是有效的,但对我来说似乎很浪费。
如何在不生成dateChanged信号的情况下撤消对QDateEdit的更改?
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Guest_form(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self)
self.date_good = True
self.date_edit = QDateEdit()
self.line_edit = QLineEdit()
layout = QVBoxLayout()
layout.addWidget(self.date_edit)
layout.addWidget(self.line_edit)
self.setLayout(layout)
self.date_edit.setFocus()
self.date_edit.dateChanged.connect(self.check_date)
self.line_edit.editingFinished.connect(self.check_date)
def check_date(self):
self.line_edit.setText(self.date_edit.date().toString())
self.date_good = False
#self.date_edit.undo() #How?
self.date_edit.setDate(QDate.currentDate())
self.line_edit.undo()
print('here')
if __name__=="__main__":
app=QApplication(sys.argv)
myapp = Guest_form()
myapp.show()
sys.exit(app.exec_())