首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt5 QDateEdit()撤销

PyQt5 QDateEdit()撤销
EN

Stack Overflow用户
提问于 2018-03-21 11:20:55
回答 1查看 1.5K关注 0票数 0

在酒店预订系统中,我有两个QDateEdit字段映射到我表单中的数据库记录。在用户更新这些字段后,程序将进行检查以确保房间可用。如果没有可用的房间,我希望将QDateEdit恢复到它的原始值,并使用QMessageBox让用户知道。

QLineEdit有一个撤销方法,它可以按照我的意愿工作。

此外,如果我试图通过从模型中提取信息来重置QDateEdit,它将再次触发dateChanged信号。这不是一个大问题,因为我知道原来的价值是有效的,但似乎浪费了我。

如何在不产生QDateEdit信号的情况下撤销对dateChanged的更改?

代码语言:javascript
复制
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_())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 11:28:57

您可以使用Qt的撤销/重做框架。你可以找到一个很好的介绍这里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49404977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档