表单输入验证,多焦点问题

Posted

技术标签:

【中文标题】表单输入验证,多焦点问题【英文标题】:Form input validation, multiple focus issues 【发布时间】:2011-02-15 01:25:24 【问题描述】:

我在尝试验证 QT4 中的某些输入时遇到问题。

我有一个带有 2 个 textEdit 字段的表单。当一个字段失去焦点时,我希望它检查该字段是否为空,如果是,则提醒用户。

这是我的代码:

void newconsole::on_nameEdit_lostFocus()

    if (this->ui->nameEdit->text().size() < 1)
    
        QMessageBox b;
        b.setText("Name must be longer than 0 characters.");
        b.setIcon(QMessageBox::Information);
        b.setStandardButtons(QMessageBox::Ok);
        b.show();
    


void newconsole::on_fileextensionEdit_lostFocus()

    if (this->ui->fileextensionEdit->text().size() < 1)
    
        QMessageBox b;
        b.setText("File extension must be longer than 0 characters.");
        b.setIcon(QMessageBox::Information);
        b.setStandardButtons(QMessageBox::Ok);
        b.show();
    

我的问题是,当我运行表单并失去对第一个 textEdit (nameEdit) 的关注时,我从两个信号中都得到了一个 MessageBox。有什么建议吗?

【问题讨论】:

您是否考虑过使用QValidator 进行输入验证? 【参考方案1】:

我的猜测是:

    您的编辑框在表单上彼此靠近或/和按 Tab 键顺序彼此相邻; 默认两个编辑框都是空的; 当您将焦点从空的 nameEdit 移动到下一个小部件 fileextensionEdit 时,会弹出第一个消息框; 此消息框会导致 fileextensionEdit 也失去焦点,因为它是空的,所以会显示第二个消息框。

希望这会有所帮助,问候

【讨论】:

如何在 QT Designer 中更改标签顺序?我似乎找不到这样做的地方。 来自 QT Designer(4.6.3):编辑->编辑标签顺序

以上是关于表单输入验证,多焦点问题的主要内容,如果未能解决你的问题,请参考以下文章

表单 用jquery做输入脱离焦点 进行正则验证

选择文件后取消焦点文件输入框(以验证输入)

表单验证

提交后将焦点设置在输入元素上

Jquery在可访问的多步骤表单上验证

关于表单(输入)常用的验证